{
  "contractName": "EnshroudProtocol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_treasury",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_weth",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_dai",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_initialAdmins",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_depositFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_withdrawFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_requiredSigs",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_confBlocks",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_baseUri",
          "type": "string"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor",
      "payable": true
    },
    {
      "inputs": [],
      "name": "Enshroud_AmountMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_ArrayTooLong",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_ENFTStillLocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_FeeTooLarge",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "Enshroud_Greylisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_HashDoesNotMatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_InvalidID",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_MVOSignaturesMissing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_NoENFT",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_NotAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_NotAuditor",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_OnlyDAOPool",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_OnlyWETH",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Enshroud_ZeroMsgValue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidRecipient",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MulWadFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Reentrancy",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnsafeRecipient",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "status",
          "type": "bool"
        }
      ],
      "name": "AdminUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "auditor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "audId",
          "type": "string"
        }
      ],
      "name": "AuditorUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "DepositERC20",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weiAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "DepositETH",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "audId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "GreyListAdd",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "GreyListDeletion",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "withdrawer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "WithdrawERC20",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "withdrawer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weiAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "WithdrawETH",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "adminStatus",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "assetBalances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "assetDepositFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "assetWithdrawFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "auditors",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "confirmationBlocks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "daoPool",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "enftUnlockTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "idToAuditorGreylist",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "requiredSigs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "treasury",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "treasuryFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "stateMutability": "payable",
      "type": "receive",
      "payable": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_mvoStaking",
          "type": "address"
        }
      ],
      "name": "setMVOStakingAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_depositor",
          "type": "address"
        }
      ],
      "name": "depositEth",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function",
      "payable": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_depositor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenContract",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "depositTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenContract",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_depositor",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "depositTokensWithPermit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address[]",
              "name": "recipients",
              "type": "address[]"
            },
            {
              "internalType": "bytes32[]",
              "name": "detailsHashes",
              "type": "bytes32[]"
            },
            {
              "internalType": "uint256[]",
              "name": "inputIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "outputIds",
              "type": "uint256[]"
            },
            {
              "internalType": "string[]",
              "name": "metadata",
              "type": "string[]"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "obHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct EnshroudProtocol.OpsInfo",
          "name": "_opsInfo",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "bytes[]",
              "name": "mvoSigs",
              "type": "bytes[]"
            },
            {
              "internalType": "string[]",
              "name": "mvoIDs",
              "type": "string[]"
            }
          ],
          "internalType": "struct EnshroudProtocol.MVOinfo",
          "name": "_mvoInfo",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_tokenContract",
          "type": "address"
        }
      ],
      "name": "mintENFTsFromDeposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address[]",
              "name": "recipients",
              "type": "address[]"
            },
            {
              "internalType": "bytes32[]",
              "name": "detailsHashes",
              "type": "bytes32[]"
            },
            {
              "internalType": "uint256[]",
              "name": "inputIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "outputIds",
              "type": "uint256[]"
            },
            {
              "internalType": "string[]",
              "name": "metadata",
              "type": "string[]"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "obHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct EnshroudProtocol.OpsInfo",
          "name": "_enftInfo",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "bytes[]",
              "name": "mvoSigs",
              "type": "bytes[]"
            },
            {
              "internalType": "string[]",
              "name": "mvoIDs",
              "type": "string[]"
            }
          ],
          "internalType": "struct EnshroudProtocol.MVOinfo",
          "name": "_mvoInfo",
          "type": "tuple"
        }
      ],
      "name": "spendENFTs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address[]",
              "name": "recipients",
              "type": "address[]"
            },
            {
              "internalType": "bytes32[]",
              "name": "detailsHashes",
              "type": "bytes32[]"
            },
            {
              "internalType": "uint256[]",
              "name": "inputIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "outputIds",
              "type": "uint256[]"
            },
            {
              "internalType": "string[]",
              "name": "metadata",
              "type": "string[]"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "obHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct EnshroudProtocol.OpsInfo",
          "name": "_opsInfo",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "bytes[]",
              "name": "mvoSigs",
              "type": "bytes[]"
            },
            {
              "internalType": "string[]",
              "name": "mvoIDs",
              "type": "string[]"
            }
          ],
          "internalType": "struct EnshroudProtocol.MVOinfo",
          "name": "_mvoInfo",
          "type": "tuple"
        },
        {
          "internalType": "uint256[]",
          "name": "_amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes16[]",
          "name": "_rand",
          "type": "bytes16[]"
        },
        {
          "internalType": "address",
          "name": "_tokenContract",
          "type": "address"
        }
      ],
      "name": "redeemENFTsAndWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_audId",
          "type": "string"
        },
        {
          "internalType": "uint256[]",
          "name": "_ids",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "_reasons",
          "type": "string[]"
        }
      ],
      "name": "auditorGreyList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "removeGreylistStatus",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_audId",
          "type": "string"
        }
      ],
      "name": "updateAuditor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenAddr",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newDepositFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_newWithdrawFee",
          "type": "uint256"
        }
      ],
      "name": "updateFees",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_status",
          "type": "bool"
        }
      ],
      "name": "updateAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_newTreasury",
          "type": "address"
        }
      ],
      "name": "updateTreasury",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_newDaoPool",
          "type": "address"
        }
      ],
      "name": "updateDaoPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_metadata",
          "type": "string"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_treasury\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_dai\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_initialAdmins\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_depositFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_withdrawFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredSigs\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_confBlocks\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_baseUri\",\"type\":\"string\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Enshroud_AmountMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_ArrayTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_ENFTStillLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Enshroud_Greylisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_HashDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_InvalidID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_MVOSignaturesMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_NoENFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_NotAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_NotAuditor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_OnlyDAOPool\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_OnlyWETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Enshroud_ZeroMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MulWadFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeRecipient\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"AdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"auditor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"audId\",\"type\":\"string\"}],\"name\":\"AuditorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"DepositERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weiAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"DepositETH\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"audId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"GreyListAdd\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"GreyListDeletion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"WithdrawERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weiAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"WithdrawETH\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"adminStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetDepositFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetWithdrawFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_audId\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"_reasons\",\"type\":\"string[]\"}],\"name\":\"auditorGreyList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"auditors\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmationBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daoPool\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_depositor\",\"type\":\"address\"}],\"name\":\"depositEth\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_depositor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"depositTokensWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"enftUnlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"idToAuditorGreylist\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"recipients\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"detailsHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"inputIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"outputIds\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"metadata\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"obHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct EnshroudProtocol.OpsInfo\",\"name\":\"_opsInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes[]\",\"name\":\"mvoSigs\",\"type\":\"bytes[]\"},{\"internalType\":\"string[]\",\"name\":\"mvoIDs\",\"type\":\"string[]\"}],\"internalType\":\"struct EnshroudProtocol.MVOinfo\",\"name\":\"_mvoInfo\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_tokenContract\",\"type\":\"address\"}],\"name\":\"mintENFTsFromDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"recipients\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"detailsHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"inputIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"outputIds\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"metadata\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"obHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct EnshroudProtocol.OpsInfo\",\"name\":\"_opsInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes[]\",\"name\":\"mvoSigs\",\"type\":\"bytes[]\"},{\"internalType\":\"string[]\",\"name\":\"mvoIDs\",\"type\":\"string[]\"}],\"internalType\":\"struct EnshroudProtocol.MVOinfo\",\"name\":\"_mvoInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes16[]\",\"name\":\"_rand\",\"type\":\"bytes16[]\"},{\"internalType\":\"address\",\"name\":\"_tokenContract\",\"type\":\"address\"}],\"name\":\"redeemENFTsAndWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"removeGreylistStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredSigs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_mvoStaking\",\"type\":\"address\"}],\"name\":\"setMVOStakingAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"recipients\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"detailsHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"inputIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"outputIds\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"metadata\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"obHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct EnshroudProtocol.OpsInfo\",\"name\":\"_enftInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes[]\",\"name\":\"mvoSigs\",\"type\":\"bytes[]\"},{\"internalType\":\"string[]\",\"name\":\"mvoIDs\",\"type\":\"string[]\"}],\"internalType\":\"struct EnshroudProtocol.MVOinfo\",\"name\":\"_mvoInfo\",\"type\":\"tuple\"}],\"name\":\"spendENFTs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasuryFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"updateAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_audId\",\"type\":\"string\"}],\"name\":\"updateAuditor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_newDaoPool\",\"type\":\"address\"}],\"name\":\"updateDaoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_newDepositFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newWithdrawFee\",\"type\":\"uint256\"}],\"name\":\"updateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_newTreasury\",\"type\":\"address\"}],\"name\":\"updateTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadata\",\"type\":\"string\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"auditorGreyList(string,uint256[],string[])\":{\"params\":{\"_audId\":\": ID of the auditor calling this function\",\"_ids\":\": array of eNFT IDs for which the auditor is altering greylist status\",\"_reasons\":\": array of strings corresponding to the reason for each respective '_ids' greylisting\"}},\"constructor\":{\"details\":\"note math of fees. Currently a 5e16 fee corresponds to 5%, as all fees are calculated with a denominator of 1e18.\",\"params\":{\"_baseUri\":\": baseURI for eNFTs, which does not operate as a normal \\\"baseURI\\\" but as a notification to check the event log of this protocol contract for the eNFT's id. This constructor-passed baseURI also removes the need for a uriFetcher\",\"_confBlocks\":\": set immutable variable 'confirmationBlocks', which provides the minimum \\\"dwell time\\\" for an eNFT before redemption\",\"_dai\":\": token contract address for DAI. Immutable. 0x6B175474E89094C44Da98b954EedeAC495271d0F for DAI on ETH mainnet.\",\"_depositFee\":\": initial per-asset percentage fee from user upon successful shielding, in 18 decimals (which also corresponds to wei). Must be < 5e17.\",\"_initialAdmins\":\": array of initial addresses with admin status. Should be at least 3 total initial admins, in order to initialise the MVOStaking address\",\"_requiredSigs\":\": immutable required number of MVO signatures for a valid Operations Block\",\"_treasury\":\": treasury address to receive 5% of deposit and withdraw fees for project operations.\",\"_weth\":\": token contract address for WETH. Immutable. 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 for WETH9 on ETH mainnet.\",\"_withdrawFee\":\": initial per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals (which also corresponds to wei). Must be < 5e17.\"}},\"depositEth(address)\":{\"details\":\"deposited ETH is immediately converted to WETH to address(this) (except for deposit fee sent to treasury and daoPool, which remains in ETH)\",\"params\":{\"_depositor\":\": address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)\"}},\"depositTokens(address,address,uint256)\":{\"details\":\"_amount of tokens must first be approved for transferFrom by address(this). While there is no token validity check here, the MVO layer will check when later generating operations block\",\"params\":{\"_amount\":\": amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())\",\"_depositor\":\": address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)\",\"_tokenContract\":\": ERC20-compatible token contract address\"}},\"depositTokensWithPermit(address,address,uint256,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"_amount\":\": amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())\",\"_deadline\":\": deadline for permit approval usage\",\"_depositor\":\": address of depositor, to whom the EIP712 signature corresponds (often, msg.sender)\",\"_nonce\":\": user's nonce on the erc20 contract, for replay protection\",\"_tokenContract\":\": ERC20-compatible token contract address\",\"r\":\": ECDSA sig param\",\"s\":\": ECDSA sig param\",\"v\":\": ECDSA sig param\"}},\"mintENFTsFromDeposit((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),address)\":{\"details\":\"because msg.sender is used to check the 'assetBalances' mapping (to prevent spoofing on a _depositor variable), other contracts using this function will have to use delegatecall\",\"params\":{\"_mvoInfo\":\": MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata\",\"_opsInfo\":\": OpsInfo struct containing all of the necessary Operations Block information\",\"_tokenContract\":\": ERC20-compatible token contract address; pass the 'weth' address to mint an eNFT for ETH deposits\"}},\"redeemENFTsAndWithdraw((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),uint256[],bytes16[],address)\":{\"details\":\"caller will be able to access decrypted eNFT metadata off chain in order to supply info to this function\",\"params\":{\"_amounts\":\": array of amounts of tokens/asset requested for withdrawal, in order by _id\",\"_mvoInfo\":\": MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs\",\"_opsInfo\":\": OpsInfo struct containing all of the necessary Operations Block information\",\"_rand\":\": array of optional randomly generated bytes, represented in base64, generated client-side.\",\"_tokenContract\":\": token contract address requested for withdraw. Provide zero address for ETH/native token withdrawal.\"}},\"removeGreylistStatus(uint256)\":{\"params\":{\"_id\":\": ID of greylisted eNFT, to be removed from greylist\"}},\"setMVOStakingAddress(address)\":{\"details\":\"must be set after mvoStaking contract is deployed, and before the protocol is used\",\"params\":{\"_mvoStaking\":\": contract address for MVO storage and logic\"}},\"spendENFTs((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]))\":{\"details\":\"only necessary to check msg.sender's balanceOf to burn the spent eNFT -- the new eNFTs will be produced by calling _mintNewENFTs(). Call only after new OperationsBlock received for subsequent eNFT mints.\",\"params\":{\"_enftInfo\":\": OpsInfo struct containing all of the necessary OperationsBlock information to mint new eNFTs\",\"_mvoInfo\":\": MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs\"}},\"updateAdmin(address,bool)\":{\"params\":{\"_addr\":\": address whose admin status is being updated\",\"_status\":\": true for admin status grant, false for revocation\"}},\"updateAuditor(address,string)\":{\"params\":{\"_addr\":\": address of auditor, or zero address to remove an auditor\",\"_audId\":\": ID of the auditor being updated by admin\"}},\"updateDaoPool(address)\":{\"params\":{\"_newDaoPool\":\": new DAO Pool address\"}},\"updateFees(address,uint256,uint256)\":{\"params\":{\"_newDepositFee\":\": new per-asset percentage fee from user upon successful shielding, in 18 decimals. Must be < 5e17.\",\"_newWithdrawFee\":\": new per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals. Must be < 5e17.\",\"_tokenAddr\":\": address of token whose fees are being updated. Leave as zero address for global changes (native token always has global fees)\"}},\"updateTreasury(address)\":{\"params\":{\"_newTreasury\":\": new treasury address\"}},\"uri(string)\":{\"params\":{\"_metadata\":\": eNFT token metadata\"},\"returns\":{\"_0\":\"uri for the supplied '_metadata'; see notes on baseURI in the constructor natSpec\"}}},\"stateVariables\":{\"daiToken\":{\"details\":\"to enable dai-pattern permit (ETH mainnet, possibly elsewhere)\"}},\"version\":1},\"userdoc\":{\"errors\":{\"UnsafeRecipient()\":[{\"notice\":\"----------------------------------------------------------------------- Custom Errors -----------------------------------------------------------------------\"}]},\"events\":{\"AdminUpdated(address,bool)\":{\"notice\":\"certain events excluded for contract size considerations, such as unlikely/rare variable updates (iMVOStaking, treasury, etc.)\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"notice\":\"----------------------------------------------------------------------- Events -----------------------------------------------------------------------\"}},\"kind\":\"user\",\"methods\":{\"assetBalances(address,address)\":{\"notice\":\"maps a user to a mapping of tokenContract to amount deposited in this contract\"},\"auditorGreyList(string,uint256[],string[])\":{\"notice\":\"for an auditor to change eNFT(s) greylist status\"},\"auditors(string)\":{\"notice\":\"maps auditor Id to their address. Zero address means no such auditor exists.\"},\"balanceOf(address,uint256)\":{\"notice\":\"----------------------------------------------------------------------- ERC1155 Storage -----------------------------------------------------------------------\"},\"depositEth(address)\":{\"notice\":\"deposit ETH/applicable native token. Msg.value is amount of deposit, which is in wei (18 decimals).\"},\"depositTokens(address,address,uint256)\":{\"notice\":\"deposit ERC20-compatible tokens after '_depositor' approved address(this) for '_amount' of tokens in the '_tokenContract'\"},\"depositTokensWithPermit(address,address,uint256,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"deposit an ERC20-compatible asset which supports gasless ERC20Permit via EIP2612 to approve this address for transferFrom msg.sender\"},\"enftUnlockTime(uint256)\":{\"notice\":\"sets dwell time for an eNFT before redemption by mapping eNFT id to (mint block.number + 'confirmationBlocks')\"},\"idToAuditorGreylist(uint256)\":{\"notice\":\"maps an eNFT's id number to error string; contains the AudId of the Auditor node who so marked it, and may contain a reason code.\"},\"mintENFTsFromDeposit((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),address)\":{\"notice\":\"called by an address which has already deposited assets into this contract to mintENFTs based on some amount of those assets up to msg.sender's 'assetBalances'\"},\"redeemENFTsAndWithdraw((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),uint256[],bytes16[],address)\":{\"notice\":\"for eNFT holder to redeem their eNFT(s) for asset withdrawal via their decrypted eNFT metadata\"},\"removeGreylistStatus(uint256)\":{\"notice\":\"upon call by three admins, remove an eNFT's greylist status\"},\"setMVOStakingAddress(address)\":{\"notice\":\"initialise (or replace) the MVOStaking contract address, by three different admins\"},\"spendENFTs((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]))\":{\"notice\":\"for a holder of eNFT(s) to spend their eNFT(s) (after receiving new OperationsBlock) for new eNFT(s) to be subsequently minted, without publicly compromising the corresponding asset or amount in the subsequently minted eNFTs\"},\"supportsInterface(bytes4)\":{\"notice\":\"----------------------------------------------------------------------- ERC165 Logic -----------------------------------------------------------------------\"},\"treasuryFee()\":{\"notice\":\"initial treasury fee is 5%. To remove, DAO voting app (once added as admin) and two other admins can vote to change treasury address to DAO pool\"},\"updateAdmin(address,bool)\":{\"notice\":\"allows an admin to designate another admin or revoke an active admin; can be used in event of malicious admin/exploit, to remove initial admins, add DAO voting addresses, etc.\"},\"updateAuditor(address,string)\":{\"notice\":\"for three admins to update an auditor's status\"}},\"notice\":\"Enshroud protocol contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/EnshroudProtocol.sol\":\"EnshroudProtocol\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/EnshroudProtocol.sol\":{\"keccak256\":\"0xdfc677d83b8b81c9000c35de271d8796cce80eec15e447d486551b0f0e8eacb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a65342736d41ab0d489386bf3a932ea13d6910ef5b19a9899618288cf5013ee\",\"dweb:/ipfs/QmRxHjngbkyFug24aUozgHYJrPAQEtV4fxN9tss747zsdD\"]},\"project:/contracts/ReentrancyGuard.sol\":{\"keccak256\":\"0x6a42732aa0a681892f66e5f7b3b3075444378bf937c8e93661df5e7443c5c3dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://778a2ee1360d2ace549ac0f283ccf3f7279bdff8876fdc037c4bcad012652717\",\"dweb:/ipfs/QmTrnghLT57Y3jD9yNR3fycronEc9nVuYEjzxnYtJpjX1F\"]},\"project:/contracts/SafeTransferLib.sol\":{\"keccak256\":\"0xb0500234799f59758b44c78ed63166f2b64a5d8c0c19024fd85208508656164f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f66a271b4ebee7032c91876874f54773a35955249b912621c7321502a365d417\",\"dweb:/ipfs/QmVkYb24oB8BKCebkrQG6eNubX55eUDsyFF7vNTepFjLPi\"]}},\"version\":1}",
  "bytecode": "[encoded data, 32468 characters]",
  "deployedBytecode": "[encoded data, 29650 characters]",
  "immutableReferences": {
    "3688": [
      {
        "length": 32,
        "start": 2809
      }
    ],
    "3699": [
      {
        "length": 32,
        "start": 493
      },
      {
        "length": 32,
        "start": 5375
      },
      {
        "length": 32,
        "start": 10049
      }
    ],
    "3701": [
      {
        "length": 32,
        "start": 933
      },
      {
        "length": 32,
        "start": 9406
      }
    ],
    "3719": [
      {
        "length": 32,
        "start": 5448
      },
      {
        "length": 32,
        "start": 10128
      }
    ]
  },
  "generatedSources": [
    {
      "ast": {
        "nativeSrc": "0:6197:7",
        "nodeType": "YulBlock",
        "src": "0:6197:7",
        "statements": [
          {
            "nativeSrc": "6:3:7",
            "nodeType": "YulBlock",
            "src": "6:3:7",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "67:86:7",
              "nodeType": "YulBlock",
              "src": "67:86:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "131:16:7",
                    "nodeType": "YulBlock",
                    "src": "131:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "140:1:7",
                              "nodeType": "YulLiteral",
                              "src": "140:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "143:1:7",
                              "nodeType": "YulLiteral",
                              "src": "143:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "133:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "133:6:7"
                          },
                          "nativeSrc": "133:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "133:12:7"
                        },
                        "nativeSrc": "133:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "133:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "90:5:7",
                            "nodeType": "YulIdentifier",
                            "src": "90:5:7"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "101:5:7",
                                "nodeType": "YulIdentifier",
                                "src": "101:5:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "116:3:7",
                                        "nodeType": "YulLiteral",
                                        "src": "116:3:7",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "121:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "121:1:7",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "112:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:7"
                                    },
                                    "nativeSrc": "112:11:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:11:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "125:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "125:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "108:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:7"
                                },
                                "nativeSrc": "108:19:7",
                                "nodeType": "YulFunctionCall",
                                "src": "108:19:7"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "97:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "97:3:7"
                            },
                            "nativeSrc": "97:31:7",
                            "nodeType": "YulFunctionCall",
                            "src": "97:31:7"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "87:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "87:2:7"
                        },
                        "nativeSrc": "87:42:7",
                        "nodeType": "YulFunctionCall",
                        "src": "87:42:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "80:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "80:6:7"
                    },
                    "nativeSrc": "80:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "80:50:7"
                  },
                  "nativeSrc": "77:70:7",
                  "nodeType": "YulIf",
                  "src": "77:70:7"
                }
              ]
            },
            "name": "validator_revert_address_payable",
            "nativeSrc": "14:139:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "56:5:7",
                "nodeType": "YulTypedName",
                "src": "56:5:7",
                "type": ""
              }
            ],
            "src": "14:139:7"
          },
          {
            "body": {
              "nativeSrc": "218:86:7",
              "nodeType": "YulBlock",
              "src": "218:86:7",
              "statements": [
                {
                  "nativeSrc": "228:22:7",
                  "nodeType": "YulAssignment",
                  "src": "228:22:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "243:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "243:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "237:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "237:5:7"
                    },
                    "nativeSrc": "237:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "237:13:7"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "228:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "228:5:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "292:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "292:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address_payable",
                      "nativeSrc": "259:32:7",
                      "nodeType": "YulIdentifier",
                      "src": "259:32:7"
                    },
                    "nativeSrc": "259:39:7",
                    "nodeType": "YulFunctionCall",
                    "src": "259:39:7"
                  },
                  "nativeSrc": "259:39:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "259:39:7"
                }
              ]
            },
            "name": "abi_decode_address_fromMemory",
            "nativeSrc": "158:146:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "197:6:7",
                "nodeType": "YulTypedName",
                "src": "197:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "208:5:7",
                "nodeType": "YulTypedName",
                "src": "208:5:7",
                "type": ""
              }
            ],
            "src": "158:146:7"
          },
          {
            "body": {
              "nativeSrc": "341:95:7",
              "nodeType": "YulBlock",
              "src": "341:95:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "358:1:7",
                        "nodeType": "YulLiteral",
                        "src": "358:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "365:3:7",
                            "nodeType": "YulLiteral",
                            "src": "365:3:7",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "370:10:7",
                            "nodeType": "YulLiteral",
                            "src": "370:10:7",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "361:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "361:3:7"
                        },
                        "nativeSrc": "361:20:7",
                        "nodeType": "YulFunctionCall",
                        "src": "361:20:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "351:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "351:6:7"
                    },
                    "nativeSrc": "351:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "351:31:7"
                  },
                  "nativeSrc": "351:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "351:31:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "398:1:7",
                        "nodeType": "YulLiteral",
                        "src": "398:1:7",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "401:4:7",
                        "nodeType": "YulLiteral",
                        "src": "401:4:7",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "391:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "391:6:7"
                    },
                    "nativeSrc": "391:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "391:15:7"
                  },
                  "nativeSrc": "391:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "391:15:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "422:1:7",
                        "nodeType": "YulLiteral",
                        "src": "422:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "425:4:7",
                        "nodeType": "YulLiteral",
                        "src": "425:4:7",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "415:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "415:6:7"
                    },
                    "nativeSrc": "415:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "415:15:7"
                  },
                  "nativeSrc": "415:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "415:15:7"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "309:127:7",
            "nodeType": "YulFunctionDefinition",
            "src": "309:127:7"
          },
          {
            "body": {
              "nativeSrc": "486:230:7",
              "nodeType": "YulBlock",
              "src": "486:230:7",
              "statements": [
                {
                  "nativeSrc": "496:19:7",
                  "nodeType": "YulAssignment",
                  "src": "496:19:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "512:2:7",
                        "nodeType": "YulLiteral",
                        "src": "512:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "506:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "506:5:7"
                    },
                    "nativeSrc": "506:9:7",
                    "nodeType": "YulFunctionCall",
                    "src": "506:9:7"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "496:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "496:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "524:58:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "524:58:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "546:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "546:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nativeSrc": "562:4:7",
                                "nodeType": "YulIdentifier",
                                "src": "562:4:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "568:2:7",
                                "nodeType": "YulLiteral",
                                "src": "568:2:7",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "558:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "558:3:7"
                            },
                            "nativeSrc": "558:13:7",
                            "nodeType": "YulFunctionCall",
                            "src": "558:13:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "577:2:7",
                                "nodeType": "YulLiteral",
                                "src": "577:2:7",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "573:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "573:3:7"
                            },
                            "nativeSrc": "573:7:7",
                            "nodeType": "YulFunctionCall",
                            "src": "573:7:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "554:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "554:3:7"
                        },
                        "nativeSrc": "554:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "554:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "542:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "542:3:7"
                    },
                    "nativeSrc": "542:40:7",
                    "nodeType": "YulFunctionCall",
                    "src": "542:40:7"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "528:10:7",
                      "nodeType": "YulTypedName",
                      "src": "528:10:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "657:22:7",
                    "nodeType": "YulBlock",
                    "src": "657:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "659:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "659:16:7"
                          },
                          "nativeSrc": "659:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "659:18:7"
                        },
                        "nativeSrc": "659:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "659:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "600:10:7",
                            "nodeType": "YulIdentifier",
                            "src": "600:10:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "620:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "620:2:7",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "624:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "624:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "616:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "616:3:7"
                                },
                                "nativeSrc": "616:10:7",
                                "nodeType": "YulFunctionCall",
                                "src": "616:10:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "628:1:7",
                                "nodeType": "YulLiteral",
                                "src": "628:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "612:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "612:3:7"
                            },
                            "nativeSrc": "612:18:7",
                            "nodeType": "YulFunctionCall",
                            "src": "612:18:7"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "597:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "597:2:7"
                        },
                        "nativeSrc": "597:34:7",
                        "nodeType": "YulFunctionCall",
                        "src": "597:34:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "636:10:7",
                            "nodeType": "YulIdentifier",
                            "src": "636:10:7"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "648:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "648:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "633:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "633:2:7"
                        },
                        "nativeSrc": "633:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "633:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "594:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "594:2:7"
                    },
                    "nativeSrc": "594:62:7",
                    "nodeType": "YulFunctionCall",
                    "src": "594:62:7"
                  },
                  "nativeSrc": "591:88:7",
                  "nodeType": "YulIf",
                  "src": "591:88:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "695:2:7",
                        "nodeType": "YulLiteral",
                        "src": "695:2:7",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "699:10:7",
                        "nodeType": "YulIdentifier",
                        "src": "699:10:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "688:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "688:6:7"
                    },
                    "nativeSrc": "688:22:7",
                    "nodeType": "YulFunctionCall",
                    "src": "688:22:7"
                  },
                  "nativeSrc": "688:22:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "688:22:7"
                }
              ]
            },
            "name": "allocate_memory",
            "nativeSrc": "441:275:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nativeSrc": "466:4:7",
                "nodeType": "YulTypedName",
                "src": "466:4:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nativeSrc": "475:6:7",
                "nodeType": "YulTypedName",
                "src": "475:6:7",
                "type": ""
              }
            ],
            "src": "441:275:7"
          },
          {
            "body": {
              "nativeSrc": "796:726:7",
              "nodeType": "YulBlock",
              "src": "796:726:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "845:16:7",
                    "nodeType": "YulBlock",
                    "src": "845:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "854:1:7",
                              "nodeType": "YulLiteral",
                              "src": "854:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "857:1:7",
                              "nodeType": "YulLiteral",
                              "src": "857:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "847:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "847:6:7"
                          },
                          "nativeSrc": "847:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "847:12:7"
                        },
                        "nativeSrc": "847:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "847:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "824:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "824:6:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "832:4:7",
                                "nodeType": "YulLiteral",
                                "src": "832:4:7",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "820:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "820:3:7"
                            },
                            "nativeSrc": "820:17:7",
                            "nodeType": "YulFunctionCall",
                            "src": "820:17:7"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "839:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "839:3:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "816:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "816:3:7"
                        },
                        "nativeSrc": "816:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "816:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "809:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "809:6:7"
                    },
                    "nativeSrc": "809:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "809:35:7"
                  },
                  "nativeSrc": "806:55:7",
                  "nodeType": "YulIf",
                  "src": "806:55:7"
                },
                {
                  "nativeSrc": "870:27:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "870:27:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "890:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "890:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "884:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "884:5:7"
                    },
                    "nativeSrc": "884:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "884:13:7"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "874:6:7",
                      "nodeType": "YulTypedName",
                      "src": "874:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "940:22:7",
                    "nodeType": "YulBlock",
                    "src": "940:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "942:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "942:16:7"
                          },
                          "nativeSrc": "942:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "942:18:7"
                        },
                        "nativeSrc": "942:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "942:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "912:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "912:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "928:2:7",
                                "nodeType": "YulLiteral",
                                "src": "928:2:7",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "932:1:7",
                                "nodeType": "YulLiteral",
                                "src": "932:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "924:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "924:3:7"
                            },
                            "nativeSrc": "924:10:7",
                            "nodeType": "YulFunctionCall",
                            "src": "924:10:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "936:1:7",
                            "nodeType": "YulLiteral",
                            "src": "936:1:7",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "920:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "920:3:7"
                        },
                        "nativeSrc": "920:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "920:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "909:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "909:2:7"
                    },
                    "nativeSrc": "909:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "909:30:7"
                  },
                  "nativeSrc": "906:56:7",
                  "nodeType": "YulIf",
                  "src": "906:56:7"
                },
                {
                  "nativeSrc": "971:24:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "971:24:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "985:1:7",
                        "nodeType": "YulLiteral",
                        "src": "985:1:7",
                        "type": "",
                        "value": "5"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "988:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "988:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nativeSrc": "981:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "981:3:7"
                    },
                    "nativeSrc": "981:14:7",
                    "nodeType": "YulFunctionCall",
                    "src": "981:14:7"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "975:2:7",
                      "nodeType": "YulTypedName",
                      "src": "975:2:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1004:41:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1004:41:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nativeSrc": "1035:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "1035:2:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1039:4:7",
                            "nodeType": "YulLiteral",
                            "src": "1039:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1031:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1031:3:7"
                        },
                        "nativeSrc": "1031:13:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1031:13:7"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nativeSrc": "1015:15:7",
                      "nodeType": "YulIdentifier",
                      "src": "1015:15:7"
                    },
                    "nativeSrc": "1015:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1015:30:7"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nativeSrc": "1008:3:7",
                      "nodeType": "YulTypedName",
                      "src": "1008:3:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1054:18:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1054:18:7",
                  "value": {
                    "name": "dst",
                    "nativeSrc": "1069:3:7",
                    "nodeType": "YulIdentifier",
                    "src": "1069:3:7"
                  },
                  "variables": [
                    {
                      "name": "array_1",
                      "nativeSrc": "1058:7:7",
                      "nodeType": "YulTypedName",
                      "src": "1058:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nativeSrc": "1088:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "1088:3:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1093:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1093:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1081:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1081:6:7"
                    },
                    "nativeSrc": "1081:19:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1081:19:7"
                  },
                  "nativeSrc": "1081:19:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "1081:19:7"
                },
                {
                  "nativeSrc": "1109:21:7",
                  "nodeType": "YulAssignment",
                  "src": "1109:21:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nativeSrc": "1120:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "1120:3:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1125:4:7",
                        "nodeType": "YulLiteral",
                        "src": "1125:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1116:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "1116:3:7"
                    },
                    "nativeSrc": "1116:14:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1116:14:7"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nativeSrc": "1109:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "1109:3:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "1139:40:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1139:40:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nativeSrc": "1161:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1161:6:7"
                          },
                          {
                            "name": "_1",
                            "nativeSrc": "1169:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "1169:2:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1157:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1157:3:7"
                        },
                        "nativeSrc": "1157:15:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1157:15:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1174:4:7",
                        "nodeType": "YulLiteral",
                        "src": "1174:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1153:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "1153:3:7"
                    },
                    "nativeSrc": "1153:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1153:26:7"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nativeSrc": "1143:6:7",
                      "nodeType": "YulTypedName",
                      "src": "1143:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1207:16:7",
                    "nodeType": "YulBlock",
                    "src": "1207:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1216:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1216:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1219:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1219:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1209:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1209:6:7"
                          },
                          "nativeSrc": "1209:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1209:12:7"
                        },
                        "nativeSrc": "1209:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1209:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nativeSrc": "1194:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1194:6:7"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1202:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "1202:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1191:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1191:2:7"
                    },
                    "nativeSrc": "1191:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1191:15:7"
                  },
                  "nativeSrc": "1188:35:7",
                  "nodeType": "YulIf",
                  "src": "1188:35:7"
                },
                {
                  "nativeSrc": "1232:28:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1232:28:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1247:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1247:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1255:4:7",
                        "nodeType": "YulLiteral",
                        "src": "1255:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1243:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "1243:3:7"
                    },
                    "nativeSrc": "1243:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1243:17:7"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nativeSrc": "1236:3:7",
                      "nodeType": "YulTypedName",
                      "src": "1236:3:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1327:164:7",
                    "nodeType": "YulBlock",
                    "src": "1327:164:7",
                    "statements": [
                      {
                        "nativeSrc": "1341:23:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "1341:23:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nativeSrc": "1360:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1360:3:7"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "1354:5:7",
                            "nodeType": "YulIdentifier",
                            "src": "1354:5:7"
                          },
                          "nativeSrc": "1354:10:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1354:10:7"
                        },
                        "variables": [
                          {
                            "name": "value",
                            "nativeSrc": "1345:5:7",
                            "nodeType": "YulTypedName",
                            "src": "1345:5:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value",
                              "nativeSrc": "1410:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "1410:5:7"
                            }
                          ],
                          "functionName": {
                            "name": "validator_revert_address_payable",
                            "nativeSrc": "1377:32:7",
                            "nodeType": "YulIdentifier",
                            "src": "1377:32:7"
                          },
                          "nativeSrc": "1377:39:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1377:39:7"
                        },
                        "nativeSrc": "1377:39:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1377:39:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nativeSrc": "1436:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1436:3:7"
                            },
                            {
                              "name": "value",
                              "nativeSrc": "1441:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "1441:5:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "1429:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1429:6:7"
                          },
                          "nativeSrc": "1429:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1429:18:7"
                        },
                        "nativeSrc": "1429:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1429:18:7"
                      },
                      {
                        "nativeSrc": "1460:21:7",
                        "nodeType": "YulAssignment",
                        "src": "1460:21:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nativeSrc": "1471:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1471:3:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1476:4:7",
                              "nodeType": "YulLiteral",
                              "src": "1476:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "1467:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "1467:3:7"
                          },
                          "nativeSrc": "1467:14:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1467:14:7"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nativeSrc": "1460:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "1460:3:7"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nativeSrc": "1280:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "1280:3:7"
                      },
                      {
                        "name": "srcEnd",
                        "nativeSrc": "1285:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1285:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "1277:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1277:2:7"
                    },
                    "nativeSrc": "1277:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1277:15:7"
                  },
                  "nativeSrc": "1269:222:7",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "1293:25:7",
                    "nodeType": "YulBlock",
                    "src": "1293:25:7",
                    "statements": [
                      {
                        "nativeSrc": "1295:21:7",
                        "nodeType": "YulAssignment",
                        "src": "1295:21:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nativeSrc": "1306:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1306:3:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1311:4:7",
                              "nodeType": "YulLiteral",
                              "src": "1311:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "1302:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "1302:3:7"
                          },
                          "nativeSrc": "1302:14:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1302:14:7"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nativeSrc": "1295:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "1295:3:7"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nativeSrc": "1273:3:7",
                    "nodeType": "YulBlock",
                    "src": "1273:3:7",
                    "statements": []
                  },
                  "src": "1269:222:7"
                },
                {
                  "nativeSrc": "1500:16:7",
                  "nodeType": "YulAssignment",
                  "src": "1500:16:7",
                  "value": {
                    "name": "array_1",
                    "nativeSrc": "1509:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "1509:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nativeSrc": "1500:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "1500:5:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_address_dyn_fromMemory",
            "nativeSrc": "721:801:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "770:6:7",
                "nodeType": "YulTypedName",
                "src": "770:6:7",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "778:3:7",
                "nodeType": "YulTypedName",
                "src": "778:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nativeSrc": "786:5:7",
                "nodeType": "YulTypedName",
                "src": "786:5:7",
                "type": ""
              }
            ],
            "src": "721:801:7"
          },
          {
            "body": {
              "nativeSrc": "1591:603:7",
              "nodeType": "YulBlock",
              "src": "1591:603:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1640:16:7",
                    "nodeType": "YulBlock",
                    "src": "1640:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1649:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1649:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1652:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1652:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1642:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1642:6:7"
                          },
                          "nativeSrc": "1642:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1642:12:7"
                        },
                        "nativeSrc": "1642:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1642:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1619:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "1619:6:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1627:4:7",
                                "nodeType": "YulLiteral",
                                "src": "1627:4:7",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1615:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1615:3:7"
                            },
                            "nativeSrc": "1615:17:7",
                            "nodeType": "YulFunctionCall",
                            "src": "1615:17:7"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "1634:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "1634:3:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "1611:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1611:3:7"
                        },
                        "nativeSrc": "1611:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1611:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "1604:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1604:6:7"
                    },
                    "nativeSrc": "1604:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1604:35:7"
                  },
                  "nativeSrc": "1601:55:7",
                  "nodeType": "YulIf",
                  "src": "1601:55:7"
                },
                {
                  "nativeSrc": "1665:27:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1665:27:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1685:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1685:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "1679:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "1679:5:7"
                    },
                    "nativeSrc": "1679:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1679:13:7"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "1669:6:7",
                      "nodeType": "YulTypedName",
                      "src": "1669:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1735:22:7",
                    "nodeType": "YulBlock",
                    "src": "1735:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "1737:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "1737:16:7"
                          },
                          "nativeSrc": "1737:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1737:18:7"
                        },
                        "nativeSrc": "1737:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1737:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "1707:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1707:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "1723:2:7",
                                "nodeType": "YulLiteral",
                                "src": "1723:2:7",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1727:1:7",
                                "nodeType": "YulLiteral",
                                "src": "1727:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "1719:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1719:3:7"
                            },
                            "nativeSrc": "1719:10:7",
                            "nodeType": "YulFunctionCall",
                            "src": "1719:10:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1731:1:7",
                            "nodeType": "YulLiteral",
                            "src": "1731:1:7",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1715:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1715:3:7"
                        },
                        "nativeSrc": "1715:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1715:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1704:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1704:2:7"
                    },
                    "nativeSrc": "1704:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1704:30:7"
                  },
                  "nativeSrc": "1701:56:7",
                  "nodeType": "YulIf",
                  "src": "1701:56:7"
                },
                {
                  "nativeSrc": "1766:74:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1766:74:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "1809:6:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "1809:6:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1817:4:7",
                                    "nodeType": "YulLiteral",
                                    "src": "1817:4:7",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "1805:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "1805:3:7"
                                },
                                "nativeSrc": "1805:17:7",
                                "nodeType": "YulFunctionCall",
                                "src": "1805:17:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1828:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "1828:2:7",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "1824:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "1824:3:7"
                                },
                                "nativeSrc": "1824:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "1824:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "1801:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1801:3:7"
                            },
                            "nativeSrc": "1801:31:7",
                            "nodeType": "YulFunctionCall",
                            "src": "1801:31:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1834:4:7",
                            "nodeType": "YulLiteral",
                            "src": "1834:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1797:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1797:3:7"
                        },
                        "nativeSrc": "1797:42:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1797:42:7"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nativeSrc": "1781:15:7",
                      "nodeType": "YulIdentifier",
                      "src": "1781:15:7"
                    },
                    "nativeSrc": "1781:59:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1781:59:7"
                  },
                  "variables": [
                    {
                      "name": "array_1",
                      "nativeSrc": "1770:7:7",
                      "nodeType": "YulTypedName",
                      "src": "1770:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array_1",
                        "nativeSrc": "1856:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "1856:7:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1865:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1865:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1849:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1849:6:7"
                    },
                    "nativeSrc": "1849:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1849:23:7"
                  },
                  "nativeSrc": "1849:23:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "1849:23:7"
                },
                {
                  "body": {
                    "nativeSrc": "1924:16:7",
                    "nodeType": "YulBlock",
                    "src": "1924:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1933:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1933:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1936:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1936:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1926:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1926:6:7"
                          },
                          "nativeSrc": "1926:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1926:12:7"
                        },
                        "nativeSrc": "1926:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1926:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1895:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "1895:6:7"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1903:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "1903:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1891:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1891:3:7"
                            },
                            "nativeSrc": "1891:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "1891:19:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1912:4:7",
                            "nodeType": "YulLiteral",
                            "src": "1912:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1887:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1887:3:7"
                        },
                        "nativeSrc": "1887:30:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1887:30:7"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1919:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "1919:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1884:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1884:2:7"
                    },
                    "nativeSrc": "1884:39:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1884:39:7"
                  },
                  "nativeSrc": "1881:59:7",
                  "nodeType": "YulIf",
                  "src": "1881:59:7"
                },
                {
                  "nativeSrc": "1949:10:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1949:10:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1958:1:7",
                    "nodeType": "YulLiteral",
                    "src": "1958:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nativeSrc": "1953:1:7",
                      "nodeType": "YulTypedName",
                      "src": "1953:1:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2020:92:7",
                    "nodeType": "YulBlock",
                    "src": "2020:92:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "array_1",
                                      "nativeSrc": "2049:7:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "2049:7:7"
                                    },
                                    {
                                      "name": "i",
                                      "nativeSrc": "2058:1:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "2058:1:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "2045:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "2045:3:7"
                                  },
                                  "nativeSrc": "2045:15:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2045:15:7"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "2062:4:7",
                                  "nodeType": "YulLiteral",
                                  "src": "2062:4:7",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "2041:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "2041:3:7"
                              },
                              "nativeSrc": "2041:26:7",
                              "nodeType": "YulFunctionCall",
                              "src": "2041:26:7"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nativeSrc": "2083:6:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "2083:6:7"
                                        },
                                        {
                                          "name": "i",
                                          "nativeSrc": "2091:1:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "2091:1:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "2079:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "2079:3:7"
                                      },
                                      "nativeSrc": "2079:14:7",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2079:14:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "2095:4:7",
                                      "nodeType": "YulLiteral",
                                      "src": "2095:4:7",
                                      "type": "",
                                      "value": "0x20"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "2075:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "2075:3:7"
                                  },
                                  "nativeSrc": "2075:25:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2075:25:7"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "2069:5:7",
                                "nodeType": "YulIdentifier",
                                "src": "2069:5:7"
                              },
                              "nativeSrc": "2069:32:7",
                              "nodeType": "YulFunctionCall",
                              "src": "2069:32:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "2034:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "2034:6:7"
                          },
                          "nativeSrc": "2034:68:7",
                          "nodeType": "YulFunctionCall",
                          "src": "2034:68:7"
                        },
                        "nativeSrc": "2034:68:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "2034:68:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nativeSrc": "1979:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "1979:1:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1982:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1982:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "1976:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1976:2:7"
                    },
                    "nativeSrc": "1976:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1976:13:7"
                  },
                  "nativeSrc": "1968:144:7",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "1990:21:7",
                    "nodeType": "YulBlock",
                    "src": "1990:21:7",
                    "statements": [
                      {
                        "nativeSrc": "1992:17:7",
                        "nodeType": "YulAssignment",
                        "src": "1992:17:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nativeSrc": "2001:1:7",
                              "nodeType": "YulIdentifier",
                              "src": "2001:1:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2004:4:7",
                              "nodeType": "YulLiteral",
                              "src": "2004:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "1997:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "1997:3:7"
                          },
                          "nativeSrc": "1997:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1997:12:7"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nativeSrc": "1992:1:7",
                            "nodeType": "YulIdentifier",
                            "src": "1992:1:7"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nativeSrc": "1972:3:7",
                    "nodeType": "YulBlock",
                    "src": "1972:3:7",
                    "statements": []
                  },
                  "src": "1968:144:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "array_1",
                                "nativeSrc": "2136:7:7",
                                "nodeType": "YulIdentifier",
                                "src": "2136:7:7"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "2145:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "2145:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "2132:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "2132:3:7"
                            },
                            "nativeSrc": "2132:20:7",
                            "nodeType": "YulFunctionCall",
                            "src": "2132:20:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2154:4:7",
                            "nodeType": "YulLiteral",
                            "src": "2154:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2128:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2128:3:7"
                        },
                        "nativeSrc": "2128:31:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2128:31:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2161:1:7",
                        "nodeType": "YulLiteral",
                        "src": "2161:1:7",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2121:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2121:6:7"
                    },
                    "nativeSrc": "2121:42:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2121:42:7"
                  },
                  "nativeSrc": "2121:42:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "2121:42:7"
                },
                {
                  "nativeSrc": "2172:16:7",
                  "nodeType": "YulAssignment",
                  "src": "2172:16:7",
                  "value": {
                    "name": "array_1",
                    "nativeSrc": "2181:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "2181:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nativeSrc": "2172:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "2172:5:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_string_fromMemory",
            "nativeSrc": "1527:667:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "1565:6:7",
                "nodeType": "YulTypedName",
                "src": "1565:6:7",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "1573:3:7",
                "nodeType": "YulTypedName",
                "src": "1573:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nativeSrc": "1581:5:7",
                "nodeType": "YulTypedName",
                "src": "1581:5:7",
                "type": ""
              }
            ],
            "src": "1527:667:7"
          },
          {
            "body": {
              "nativeSrc": "2459:1095:7",
              "nodeType": "YulBlock",
              "src": "2459:1095:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2506:16:7",
                    "nodeType": "YulBlock",
                    "src": "2506:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2515:1:7",
                              "nodeType": "YulLiteral",
                              "src": "2515:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2518:1:7",
                              "nodeType": "YulLiteral",
                              "src": "2518:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2508:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "2508:6:7"
                          },
                          "nativeSrc": "2508:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "2508:12:7"
                        },
                        "nativeSrc": "2508:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "2508:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2480:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "2480:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2489:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2489:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2476:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2476:3:7"
                        },
                        "nativeSrc": "2476:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2476:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2501:3:7",
                        "nodeType": "YulLiteral",
                        "src": "2501:3:7",
                        "type": "",
                        "value": "288"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2472:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "2472:3:7"
                    },
                    "nativeSrc": "2472:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2472:33:7"
                  },
                  "nativeSrc": "2469:53:7",
                  "nodeType": "YulIf",
                  "src": "2469:53:7"
                },
                {
                  "nativeSrc": "2531:29:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2531:29:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2550:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "2550:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "2544:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "2544:5:7"
                    },
                    "nativeSrc": "2544:16:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2544:16:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "2535:5:7",
                      "nodeType": "YulTypedName",
                      "src": "2535:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "2602:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "2602:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address_payable",
                      "nativeSrc": "2569:32:7",
                      "nodeType": "YulIdentifier",
                      "src": "2569:32:7"
                    },
                    "nativeSrc": "2569:39:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2569:39:7"
                  },
                  "nativeSrc": "2569:39:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "2569:39:7"
                },
                {
                  "nativeSrc": "2617:15:7",
                  "nodeType": "YulAssignment",
                  "src": "2617:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "2627:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "2627:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2617:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2617:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "2641:59:7",
                  "nodeType": "YulAssignment",
                  "src": "2641:59:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2685:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2685:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2696:2:7",
                            "nodeType": "YulLiteral",
                            "src": "2696:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2681:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2681:3:7"
                        },
                        "nativeSrc": "2681:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2681:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nativeSrc": "2651:29:7",
                      "nodeType": "YulIdentifier",
                      "src": "2651:29:7"
                    },
                    "nativeSrc": "2651:49:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2651:49:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2641:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2641:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "2709:59:7",
                  "nodeType": "YulAssignment",
                  "src": "2709:59:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2753:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2753:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2764:2:7",
                            "nodeType": "YulLiteral",
                            "src": "2764:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2749:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2749:3:7"
                        },
                        "nativeSrc": "2749:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2749:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nativeSrc": "2719:29:7",
                      "nodeType": "YulIdentifier",
                      "src": "2719:29:7"
                    },
                    "nativeSrc": "2719:49:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2719:49:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "2709:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2709:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "2777:39:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2777:39:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2801:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2801:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2812:2:7",
                            "nodeType": "YulLiteral",
                            "src": "2812:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2797:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2797:3:7"
                        },
                        "nativeSrc": "2797:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2797:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "2791:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "2791:5:7"
                    },
                    "nativeSrc": "2791:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2791:25:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2781:6:7",
                      "nodeType": "YulTypedName",
                      "src": "2781:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2859:16:7",
                    "nodeType": "YulBlock",
                    "src": "2859:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2868:1:7",
                              "nodeType": "YulLiteral",
                              "src": "2868:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2871:1:7",
                              "nodeType": "YulLiteral",
                              "src": "2871:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2861:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "2861:6:7"
                          },
                          "nativeSrc": "2861:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "2861:12:7"
                        },
                        "nativeSrc": "2861:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "2861:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "2831:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "2831:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "2847:2:7",
                                "nodeType": "YulLiteral",
                                "src": "2847:2:7",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "2851:1:7",
                                "nodeType": "YulLiteral",
                                "src": "2851:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "2843:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "2843:3:7"
                            },
                            "nativeSrc": "2843:10:7",
                            "nodeType": "YulFunctionCall",
                            "src": "2843:10:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2855:1:7",
                            "nodeType": "YulLiteral",
                            "src": "2855:1:7",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2839:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2839:3:7"
                        },
                        "nativeSrc": "2839:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2839:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2828:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "2828:2:7"
                    },
                    "nativeSrc": "2828:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2828:30:7"
                  },
                  "nativeSrc": "2825:50:7",
                  "nodeType": "YulIf",
                  "src": "2825:50:7"
                },
                {
                  "nativeSrc": "2884:82:7",
                  "nodeType": "YulAssignment",
                  "src": "2884:82:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2938:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2938:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2949:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "2949:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2934:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2934:3:7"
                        },
                        "nativeSrc": "2934:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2934:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "2958:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "2958:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_dyn_fromMemory",
                      "nativeSrc": "2894:39:7",
                      "nodeType": "YulIdentifier",
                      "src": "2894:39:7"
                    },
                    "nativeSrc": "2894:72:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2894:72:7"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "2884:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2884:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "2975:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2975:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "2990:1:7",
                    "nodeType": "YulLiteral",
                    "src": "2990:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "2979:7:7",
                      "nodeType": "YulTypedName",
                      "src": "2979:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3000:37:7",
                  "nodeType": "YulAssignment",
                  "src": "3000:37:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3021:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3021:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3032:3:7",
                            "nodeType": "YulLiteral",
                            "src": "3032:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3017:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3017:3:7"
                        },
                        "nativeSrc": "3017:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3017:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3011:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "3011:5:7"
                    },
                    "nativeSrc": "3011:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3011:26:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "3000:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "3000:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3046:17:7",
                  "nodeType": "YulAssignment",
                  "src": "3046:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "3056:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "3056:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "3046:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3046:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3072:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3072:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "3087:1:7",
                    "nodeType": "YulLiteral",
                    "src": "3087:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "3076:7:7",
                      "nodeType": "YulTypedName",
                      "src": "3076:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3097:37:7",
                  "nodeType": "YulAssignment",
                  "src": "3097:37:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3118:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3118:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3129:3:7",
                            "nodeType": "YulLiteral",
                            "src": "3129:3:7",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3114:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3114:3:7"
                        },
                        "nativeSrc": "3114:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3114:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3108:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "3108:5:7"
                    },
                    "nativeSrc": "3108:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3108:26:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "3097:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "3097:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3143:17:7",
                  "nodeType": "YulAssignment",
                  "src": "3143:17:7",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "3153:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "3153:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "3143:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3143:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3169:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3169:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "3184:1:7",
                    "nodeType": "YulLiteral",
                    "src": "3184:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_3",
                      "nativeSrc": "3173:7:7",
                      "nodeType": "YulTypedName",
                      "src": "3173:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3194:37:7",
                  "nodeType": "YulAssignment",
                  "src": "3194:37:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3215:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3215:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3226:3:7",
                            "nodeType": "YulLiteral",
                            "src": "3226:3:7",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3211:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3211:3:7"
                        },
                        "nativeSrc": "3211:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3211:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3205:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "3205:5:7"
                    },
                    "nativeSrc": "3205:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3205:26:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_3",
                      "nativeSrc": "3194:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "3194:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3240:17:7",
                  "nodeType": "YulAssignment",
                  "src": "3240:17:7",
                  "value": {
                    "name": "value_3",
                    "nativeSrc": "3250:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "3250:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nativeSrc": "3240:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3240:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3266:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3266:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "3281:1:7",
                    "nodeType": "YulLiteral",
                    "src": "3281:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_4",
                      "nativeSrc": "3270:7:7",
                      "nodeType": "YulTypedName",
                      "src": "3270:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3291:37:7",
                  "nodeType": "YulAssignment",
                  "src": "3291:37:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3312:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3312:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3323:3:7",
                            "nodeType": "YulLiteral",
                            "src": "3323:3:7",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3308:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3308:3:7"
                        },
                        "nativeSrc": "3308:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3308:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3302:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "3302:5:7"
                    },
                    "nativeSrc": "3302:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3302:26:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_4",
                      "nativeSrc": "3291:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "3291:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3337:17:7",
                  "nodeType": "YulAssignment",
                  "src": "3337:17:7",
                  "value": {
                    "name": "value_4",
                    "nativeSrc": "3347:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "3347:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value7",
                      "nativeSrc": "3337:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3337:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3363:42:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3363:42:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3389:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3389:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3400:3:7",
                            "nodeType": "YulLiteral",
                            "src": "3400:3:7",
                            "type": "",
                            "value": "256"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3385:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3385:3:7"
                        },
                        "nativeSrc": "3385:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3385:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3379:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "3379:5:7"
                    },
                    "nativeSrc": "3379:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3379:26:7"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "3367:8:7",
                      "nodeType": "YulTypedName",
                      "src": "3367:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3450:16:7",
                    "nodeType": "YulBlock",
                    "src": "3450:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3459:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3459:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3462:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3462:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3452:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3452:6:7"
                          },
                          "nativeSrc": "3452:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3452:12:7"
                        },
                        "nativeSrc": "3452:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3452:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "3420:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "3420:8:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "3438:2:7",
                                "nodeType": "YulLiteral",
                                "src": "3438:2:7",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3442:1:7",
                                "nodeType": "YulLiteral",
                                "src": "3442:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "3434:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "3434:3:7"
                            },
                            "nativeSrc": "3434:10:7",
                            "nodeType": "YulFunctionCall",
                            "src": "3434:10:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3446:1:7",
                            "nodeType": "YulLiteral",
                            "src": "3446:1:7",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3430:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3430:3:7"
                        },
                        "nativeSrc": "3430:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3430:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3417:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "3417:2:7"
                    },
                    "nativeSrc": "3417:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3417:32:7"
                  },
                  "nativeSrc": "3414:52:7",
                  "nodeType": "YulIf",
                  "src": "3414:52:7"
                },
                {
                  "nativeSrc": "3475:73:7",
                  "nodeType": "YulAssignment",
                  "src": "3475:73:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3518:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3518:9:7"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "3529:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "3529:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3514:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3514:3:7"
                        },
                        "nativeSrc": "3514:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3514:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "3540:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "3540:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_fromMemory",
                      "nativeSrc": "3485:28:7",
                      "nodeType": "YulIdentifier",
                      "src": "3485:28:7"
                    },
                    "nativeSrc": "3485:63:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3485:63:7"
                  },
                  "variableNames": [
                    {
                      "name": "value8",
                      "nativeSrc": "3475:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3475:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_payablet_addresst_addresst_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256t_uint256t_string_memory_ptr_fromMemory",
            "nativeSrc": "2199:1355:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2361:9:7",
                "nodeType": "YulTypedName",
                "src": "2361:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2372:7:7",
                "nodeType": "YulTypedName",
                "src": "2372:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2384:6:7",
                "nodeType": "YulTypedName",
                "src": "2384:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "2392:6:7",
                "nodeType": "YulTypedName",
                "src": "2392:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "2400:6:7",
                "nodeType": "YulTypedName",
                "src": "2400:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "2408:6:7",
                "nodeType": "YulTypedName",
                "src": "2408:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "2416:6:7",
                "nodeType": "YulTypedName",
                "src": "2416:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "2424:6:7",
                "nodeType": "YulTypedName",
                "src": "2424:6:7",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "2432:6:7",
                "nodeType": "YulTypedName",
                "src": "2432:6:7",
                "type": ""
              },
              {
                "name": "value7",
                "nativeSrc": "2440:6:7",
                "nodeType": "YulTypedName",
                "src": "2440:6:7",
                "type": ""
              },
              {
                "name": "value8",
                "nativeSrc": "2448:6:7",
                "nodeType": "YulTypedName",
                "src": "2448:6:7",
                "type": ""
              }
            ],
            "src": "2199:1355:7"
          },
          {
            "body": {
              "nativeSrc": "3614:325:7",
              "nodeType": "YulBlock",
              "src": "3614:325:7",
              "statements": [
                {
                  "nativeSrc": "3624:22:7",
                  "nodeType": "YulAssignment",
                  "src": "3624:22:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3638:1:7",
                        "nodeType": "YulLiteral",
                        "src": "3638:1:7",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nativeSrc": "3641:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "3641:4:7"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nativeSrc": "3634:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "3634:3:7"
                    },
                    "nativeSrc": "3634:12:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3634:12:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "3624:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3624:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3655:38:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3655:38:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nativeSrc": "3685:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "3685:4:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3691:1:7",
                        "nodeType": "YulLiteral",
                        "src": "3691:1:7",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "3681:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "3681:3:7"
                    },
                    "nativeSrc": "3681:12:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3681:12:7"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nativeSrc": "3659:18:7",
                      "nodeType": "YulTypedName",
                      "src": "3659:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3732:31:7",
                    "nodeType": "YulBlock",
                    "src": "3732:31:7",
                    "statements": [
                      {
                        "nativeSrc": "3734:27:7",
                        "nodeType": "YulAssignment",
                        "src": "3734:27:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nativeSrc": "3748:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "3748:6:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3756:4:7",
                              "nodeType": "YulLiteral",
                              "src": "3756:4:7",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "3744:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "3744:3:7"
                          },
                          "nativeSrc": "3744:17:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3744:17:7"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nativeSrc": "3734:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3734:6:7"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "3712:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "3712:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3705:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3705:6:7"
                    },
                    "nativeSrc": "3705:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3705:26:7"
                  },
                  "nativeSrc": "3702:61:7",
                  "nodeType": "YulIf",
                  "src": "3702:61:7"
                },
                {
                  "body": {
                    "nativeSrc": "3822:111:7",
                    "nodeType": "YulBlock",
                    "src": "3822:111:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3843:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3843:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "3850:3:7",
                                  "nodeType": "YulLiteral",
                                  "src": "3850:3:7",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "3855:10:7",
                                  "nodeType": "YulLiteral",
                                  "src": "3855:10:7",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "3846:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "3846:3:7"
                              },
                              "nativeSrc": "3846:20:7",
                              "nodeType": "YulFunctionCall",
                              "src": "3846:20:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "3836:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3836:6:7"
                          },
                          "nativeSrc": "3836:31:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3836:31:7"
                        },
                        "nativeSrc": "3836:31:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3836:31:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3887:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3887:1:7",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3890:4:7",
                              "nodeType": "YulLiteral",
                              "src": "3890:4:7",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "3880:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3880:6:7"
                          },
                          "nativeSrc": "3880:15:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3880:15:7"
                        },
                        "nativeSrc": "3880:15:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3880:15:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3915:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3915:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3918:4:7",
                              "nodeType": "YulLiteral",
                              "src": "3918:4:7",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3908:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3908:6:7"
                          },
                          "nativeSrc": "3908:15:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3908:15:7"
                        },
                        "nativeSrc": "3908:15:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3908:15:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "3778:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "3778:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nativeSrc": "3801:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3801:6:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3809:2:7",
                            "nodeType": "YulLiteral",
                            "src": "3809:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "3798:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "3798:2:7"
                        },
                        "nativeSrc": "3798:14:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3798:14:7"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "3775:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "3775:2:7"
                    },
                    "nativeSrc": "3775:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3775:38:7"
                  },
                  "nativeSrc": "3772:161:7",
                  "nodeType": "YulIf",
                  "src": "3772:161:7"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nativeSrc": "3559:380:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "3594:4:7",
                "nodeType": "YulTypedName",
                "src": "3594:4:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nativeSrc": "3603:6:7",
                "nodeType": "YulTypedName",
                "src": "3603:6:7",
                "type": ""
              }
            ],
            "src": "3559:380:7"
          },
          {
            "body": {
              "nativeSrc": "4000:65:7",
              "nodeType": "YulBlock",
              "src": "4000:65:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "4017:1:7",
                        "nodeType": "YulLiteral",
                        "src": "4017:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nativeSrc": "4020:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "4020:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4010:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4010:6:7"
                    },
                    "nativeSrc": "4010:14:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4010:14:7"
                  },
                  "nativeSrc": "4010:14:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "4010:14:7"
                },
                {
                  "nativeSrc": "4033:26:7",
                  "nodeType": "YulAssignment",
                  "src": "4033:26:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "4051:1:7",
                        "nodeType": "YulLiteral",
                        "src": "4051:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4054:4:7",
                        "nodeType": "YulLiteral",
                        "src": "4054:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nativeSrc": "4041:9:7",
                      "nodeType": "YulIdentifier",
                      "src": "4041:9:7"
                    },
                    "nativeSrc": "4041:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4041:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nativeSrc": "4033:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "4033:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nativeSrc": "3944:121:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "3983:3:7",
                "nodeType": "YulTypedName",
                "src": "3983:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nativeSrc": "3991:4:7",
                "nodeType": "YulTypedName",
                "src": "3991:4:7",
                "type": ""
              }
            ],
            "src": "3944:121:7"
          },
          {
            "body": {
              "nativeSrc": "4151:437:7",
              "nodeType": "YulBlock",
              "src": "4151:437:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "4184:398:7",
                    "nodeType": "YulBlock",
                    "src": "4184:398:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4205:1:7",
                              "nodeType": "YulLiteral",
                              "src": "4205:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "name": "array",
                              "nativeSrc": "4208:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "4208:5:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "4198:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "4198:6:7"
                          },
                          "nativeSrc": "4198:16:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4198:16:7"
                        },
                        "nativeSrc": "4198:16:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "4198:16:7"
                      },
                      {
                        "nativeSrc": "4227:30:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "4227:30:7",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4249:1:7",
                              "nodeType": "YulLiteral",
                              "src": "4249:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4252:4:7",
                              "nodeType": "YulLiteral",
                              "src": "4252:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nativeSrc": "4239:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "4239:9:7"
                          },
                          "nativeSrc": "4239:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4239:18:7"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nativeSrc": "4231:4:7",
                            "nodeType": "YulTypedName",
                            "src": "4231:4:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "4270:57:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "4270:57:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "4293:4:7",
                              "nodeType": "YulIdentifier",
                              "src": "4293:4:7"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "4303:1:7",
                                  "nodeType": "YulLiteral",
                                  "src": "4303:1:7",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nativeSrc": "4310:10:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "4310:10:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "4322:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "4322:2:7",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "4306:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "4306:3:7"
                                  },
                                  "nativeSrc": "4306:19:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "4306:19:7"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "4299:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "4299:3:7"
                              },
                              "nativeSrc": "4299:27:7",
                              "nodeType": "YulFunctionCall",
                              "src": "4299:27:7"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "4289:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "4289:3:7"
                          },
                          "nativeSrc": "4289:38:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4289:38:7"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nativeSrc": "4274:11:7",
                            "nodeType": "YulTypedName",
                            "src": "4274:11:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "4364:23:7",
                          "nodeType": "YulBlock",
                          "src": "4364:23:7",
                          "statements": [
                            {
                              "nativeSrc": "4366:19:7",
                              "nodeType": "YulAssignment",
                              "src": "4366:19:7",
                              "value": {
                                "name": "data",
                                "nativeSrc": "4381:4:7",
                                "nodeType": "YulIdentifier",
                                "src": "4381:4:7"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nativeSrc": "4366:11:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "4366:11:7"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nativeSrc": "4346:10:7",
                              "nodeType": "YulIdentifier",
                              "src": "4346:10:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4358:4:7",
                              "nodeType": "YulLiteral",
                              "src": "4358:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "4343:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "4343:2:7"
                          },
                          "nativeSrc": "4343:20:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4343:20:7"
                        },
                        "nativeSrc": "4340:47:7",
                        "nodeType": "YulIf",
                        "src": "4340:47:7"
                      },
                      {
                        "nativeSrc": "4400:41:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "4400:41:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "4414:4:7",
                              "nodeType": "YulIdentifier",
                              "src": "4414:4:7"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "4424:1:7",
                                  "nodeType": "YulLiteral",
                                  "src": "4424:1:7",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nativeSrc": "4431:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "4431:3:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "4436:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "4436:2:7",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "4427:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "4427:3:7"
                                  },
                                  "nativeSrc": "4427:12:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "4427:12:7"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "4420:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "4420:3:7"
                              },
                              "nativeSrc": "4420:20:7",
                              "nodeType": "YulFunctionCall",
                              "src": "4420:20:7"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "4410:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "4410:3:7"
                          },
                          "nativeSrc": "4410:31:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4410:31:7"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nativeSrc": "4404:2:7",
                            "nodeType": "YulTypedName",
                            "src": "4404:2:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "4454:24:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "4454:24:7",
                        "value": {
                          "name": "deleteStart",
                          "nativeSrc": "4467:11:7",
                          "nodeType": "YulIdentifier",
                          "src": "4467:11:7"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nativeSrc": "4458:5:7",
                            "nodeType": "YulTypedName",
                            "src": "4458:5:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "4552:20:7",
                          "nodeType": "YulBlock",
                          "src": "4552:20:7",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "4561:5:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "4561:5:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4568:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "4568:1:7",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nativeSrc": "4554:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "4554:6:7"
                                },
                                "nativeSrc": "4554:16:7",
                                "nodeType": "YulFunctionCall",
                                "src": "4554:16:7"
                              },
                              "nativeSrc": "4554:16:7",
                              "nodeType": "YulExpressionStatement",
                              "src": "4554:16:7"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nativeSrc": "4502:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "4502:5:7"
                            },
                            {
                              "name": "_1",
                              "nativeSrc": "4509:2:7",
                              "nodeType": "YulIdentifier",
                              "src": "4509:2:7"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "4499:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "4499:2:7"
                          },
                          "nativeSrc": "4499:13:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4499:13:7"
                        },
                        "nativeSrc": "4491:81:7",
                        "nodeType": "YulForLoop",
                        "post": {
                          "nativeSrc": "4513:26:7",
                          "nodeType": "YulBlock",
                          "src": "4513:26:7",
                          "statements": [
                            {
                              "nativeSrc": "4515:22:7",
                              "nodeType": "YulAssignment",
                              "src": "4515:22:7",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "4528:5:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "4528:5:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4535:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "4535:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "4524:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "4524:3:7"
                                },
                                "nativeSrc": "4524:13:7",
                                "nodeType": "YulFunctionCall",
                                "src": "4524:13:7"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nativeSrc": "4515:5:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "4515:5:7"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nativeSrc": "4495:3:7",
                          "nodeType": "YulBlock",
                          "src": "4495:3:7",
                          "statements": []
                        },
                        "src": "4491:81:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "4167:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "4167:3:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4172:2:7",
                        "nodeType": "YulLiteral",
                        "src": "4172:2:7",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "4164:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "4164:2:7"
                    },
                    "nativeSrc": "4164:11:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4164:11:7"
                  },
                  "nativeSrc": "4161:421:7",
                  "nodeType": "YulIf",
                  "src": "4161:421:7"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nativeSrc": "4070:518:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nativeSrc": "4123:5:7",
                "nodeType": "YulTypedName",
                "src": "4123:5:7",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "4130:3:7",
                "nodeType": "YulTypedName",
                "src": "4130:3:7",
                "type": ""
              },
              {
                "name": "startIndex",
                "nativeSrc": "4135:10:7",
                "nodeType": "YulTypedName",
                "src": "4135:10:7",
                "type": ""
              }
            ],
            "src": "4070:518:7"
          },
          {
            "body": {
              "nativeSrc": "4678:81:7",
              "nodeType": "YulBlock",
              "src": "4678:81:7",
              "statements": [
                {
                  "nativeSrc": "4688:65:7",
                  "nodeType": "YulAssignment",
                  "src": "4688:65:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nativeSrc": "4703:4:7",
                            "nodeType": "YulIdentifier",
                            "src": "4703:4:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4721:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "4721:1:7",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nativeSrc": "4724:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "4724:3:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "4717:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "4717:3:7"
                                    },
                                    "nativeSrc": "4717:11:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4717:11:7"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4734:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "4734:1:7",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "4730:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "4730:3:7"
                                    },
                                    "nativeSrc": "4730:6:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4730:6:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "4713:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "4713:3:7"
                                },
                                "nativeSrc": "4713:24:7",
                                "nodeType": "YulFunctionCall",
                                "src": "4713:24:7"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "4709:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "4709:3:7"
                            },
                            "nativeSrc": "4709:29:7",
                            "nodeType": "YulFunctionCall",
                            "src": "4709:29:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4699:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4699:3:7"
                        },
                        "nativeSrc": "4699:40:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4699:40:7"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "4745:1:7",
                            "nodeType": "YulLiteral",
                            "src": "4745:1:7",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nativeSrc": "4748:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "4748:3:7"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "4741:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4741:3:7"
                        },
                        "nativeSrc": "4741:11:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4741:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "4696:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "4696:2:7"
                    },
                    "nativeSrc": "4696:57:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4696:57:7"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nativeSrc": "4688:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "4688:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nativeSrc": "4593:166:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "4655:4:7",
                "nodeType": "YulTypedName",
                "src": "4655:4:7",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "4661:3:7",
                "nodeType": "YulTypedName",
                "src": "4661:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nativeSrc": "4669:4:7",
                "nodeType": "YulTypedName",
                "src": "4669:4:7",
                "type": ""
              }
            ],
            "src": "4593:166:7"
          },
          {
            "body": {
              "nativeSrc": "4860:1203:7",
              "nodeType": "YulBlock",
              "src": "4860:1203:7",
              "statements": [
                {
                  "nativeSrc": "4870:24:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4870:24:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nativeSrc": "4890:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "4890:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "4884:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "4884:5:7"
                    },
                    "nativeSrc": "4884:10:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4884:10:7"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nativeSrc": "4874:6:7",
                      "nodeType": "YulTypedName",
                      "src": "4874:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4937:22:7",
                    "nodeType": "YulBlock",
                    "src": "4937:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "4939:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "4939:16:7"
                          },
                          "nativeSrc": "4939:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4939:18:7"
                        },
                        "nativeSrc": "4939:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "4939:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nativeSrc": "4909:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "4909:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4925:2:7",
                                "nodeType": "YulLiteral",
                                "src": "4925:2:7",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4929:1:7",
                                "nodeType": "YulLiteral",
                                "src": "4929:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4921:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "4921:3:7"
                            },
                            "nativeSrc": "4921:10:7",
                            "nodeType": "YulFunctionCall",
                            "src": "4921:10:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4933:1:7",
                            "nodeType": "YulLiteral",
                            "src": "4933:1:7",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "4917:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4917:3:7"
                        },
                        "nativeSrc": "4917:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4917:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "4906:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "4906:2:7"
                    },
                    "nativeSrc": "4906:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4906:30:7"
                  },
                  "nativeSrc": "4903:56:7",
                  "nodeType": "YulIf",
                  "src": "4903:56:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "5012:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "5012:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nativeSrc": "5050:4:7",
                                "nodeType": "YulIdentifier",
                                "src": "5050:4:7"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nativeSrc": "5044:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "5044:5:7"
                            },
                            "nativeSrc": "5044:11:7",
                            "nodeType": "YulFunctionCall",
                            "src": "5044:11:7"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nativeSrc": "5018:25:7",
                          "nodeType": "YulIdentifier",
                          "src": "5018:25:7"
                        },
                        "nativeSrc": "5018:38:7",
                        "nodeType": "YulFunctionCall",
                        "src": "5018:38:7"
                      },
                      {
                        "name": "newLen",
                        "nativeSrc": "5058:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "5058:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nativeSrc": "4968:43:7",
                      "nodeType": "YulIdentifier",
                      "src": "4968:43:7"
                    },
                    "nativeSrc": "4968:97:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4968:97:7"
                  },
                  "nativeSrc": "4968:97:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "4968:97:7"
                },
                {
                  "nativeSrc": "5074:18:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5074:18:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "5091:1:7",
                    "nodeType": "YulLiteral",
                    "src": "5091:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "5078:9:7",
                      "nodeType": "YulTypedName",
                      "src": "5078:9:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "5101:17:7",
                  "nodeType": "YulAssignment",
                  "src": "5101:17:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "5114:4:7",
                    "nodeType": "YulLiteral",
                    "src": "5114:4:7",
                    "type": "",
                    "value": "0x20"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "5101:9:7",
                      "nodeType": "YulIdentifier",
                      "src": "5101:9:7"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "5164:642:7",
                        "nodeType": "YulBlock",
                        "src": "5164:642:7",
                        "statements": [
                          {
                            "nativeSrc": "5178:35:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "5178:35:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nativeSrc": "5197:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5197:6:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "5209:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "5209:2:7",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "5205:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "5205:3:7"
                                  },
                                  "nativeSrc": "5205:7:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "5205:7:7"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "5193:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "5193:3:7"
                              },
                              "nativeSrc": "5193:20:7",
                              "nodeType": "YulFunctionCall",
                              "src": "5193:20:7"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nativeSrc": "5182:7:7",
                                "nodeType": "YulTypedName",
                                "src": "5182:7:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "5226:49:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "5226:49:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "5270:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5270:4:7"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nativeSrc": "5240:29:7",
                                "nodeType": "YulIdentifier",
                                "src": "5240:29:7"
                              },
                              "nativeSrc": "5240:35:7",
                              "nodeType": "YulFunctionCall",
                              "src": "5240:35:7"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nativeSrc": "5230:6:7",
                                "nodeType": "YulTypedName",
                                "src": "5230:6:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "5288:10:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "5288:10:7",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "5297:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5297:1:7",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "5292:1:7",
                                "nodeType": "YulTypedName",
                                "src": "5292:1:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "5368:165:7",
                              "nodeType": "YulBlock",
                              "src": "5368:165:7",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "5393:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5393:6:7"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nativeSrc": "5411:3:7",
                                                "nodeType": "YulIdentifier",
                                                "src": "5411:3:7"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nativeSrc": "5416:9:7",
                                                "nodeType": "YulIdentifier",
                                                "src": "5416:9:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "5407:3:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "5407:3:7"
                                            },
                                            "nativeSrc": "5407:19:7",
                                            "nodeType": "YulFunctionCall",
                                            "src": "5407:19:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "5401:5:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "5401:5:7"
                                        },
                                        "nativeSrc": "5401:26:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "5401:26:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "5386:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5386:6:7"
                                    },
                                    "nativeSrc": "5386:42:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5386:42:7"
                                  },
                                  "nativeSrc": "5386:42:7",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "5386:42:7"
                                },
                                {
                                  "nativeSrc": "5445:24:7",
                                  "nodeType": "YulAssignment",
                                  "src": "5445:24:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "5459:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5459:6:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "5467:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "5467:1:7",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "5455:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5455:3:7"
                                    },
                                    "nativeSrc": "5455:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5455:14:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nativeSrc": "5445:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5445:6:7"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "5486:33:7",
                                  "nodeType": "YulAssignment",
                                  "src": "5486:33:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nativeSrc": "5503:9:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5503:9:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "5514:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "5514:4:7",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "5499:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5499:3:7"
                                    },
                                    "nativeSrc": "5499:20:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5499:20:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nativeSrc": "5486:9:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5486:9:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "5322:1:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5322:1:7"
                                },
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "5325:7:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5325:7:7"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "5319:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "5319:2:7"
                              },
                              "nativeSrc": "5319:14:7",
                              "nodeType": "YulFunctionCall",
                              "src": "5319:14:7"
                            },
                            "nativeSrc": "5311:222:7",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "5334:21:7",
                              "nodeType": "YulBlock",
                              "src": "5334:21:7",
                              "statements": [
                                {
                                  "nativeSrc": "5336:17:7",
                                  "nodeType": "YulAssignment",
                                  "src": "5336:17:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "5345:1:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5345:1:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "5348:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "5348:4:7",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "5341:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5341:3:7"
                                    },
                                    "nativeSrc": "5341:12:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5341:12:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "5336:1:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5336:1:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "5315:3:7",
                              "nodeType": "YulBlock",
                              "src": "5315:3:7",
                              "statements": []
                            },
                            "src": "5311:222:7"
                          },
                          {
                            "body": {
                              "nativeSrc": "5581:166:7",
                              "nodeType": "YulBlock",
                              "src": "5581:166:7",
                              "statements": [
                                {
                                  "nativeSrc": "5599:43:7",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "5599:43:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "5626:3:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "5626:3:7"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "5631:9:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "5631:9:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "5622:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "5622:3:7"
                                        },
                                        "nativeSrc": "5622:19:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "5622:19:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "5616:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5616:5:7"
                                    },
                                    "nativeSrc": "5616:26:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5616:26:7"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nativeSrc": "5603:9:7",
                                      "nodeType": "YulTypedName",
                                      "src": "5603:9:7",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "5666:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5666:6:7"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nativeSrc": "5678:9:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "5678:9:7"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "5705:1:7",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5705:1:7",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nativeSrc": "5708:6:7",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5708:6:7"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nativeSrc": "5701:3:7",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5701:3:7"
                                                        },
                                                        "nativeSrc": "5701:14:7",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5701:14:7"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "5717:3:7",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5717:3:7",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nativeSrc": "5697:3:7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5697:3:7"
                                                    },
                                                    "nativeSrc": "5697:24:7",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5697:24:7"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "5727:1:7",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5727:1:7",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nativeSrc": "5723:3:7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5723:3:7"
                                                    },
                                                    "nativeSrc": "5723:6:7",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5723:6:7"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nativeSrc": "5693:3:7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5693:3:7"
                                                },
                                                "nativeSrc": "5693:37:7",
                                                "nodeType": "YulFunctionCall",
                                                "src": "5693:37:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nativeSrc": "5689:3:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "5689:3:7"
                                            },
                                            "nativeSrc": "5689:42:7",
                                            "nodeType": "YulFunctionCall",
                                            "src": "5689:42:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nativeSrc": "5674:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "5674:3:7"
                                        },
                                        "nativeSrc": "5674:58:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "5674:58:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "5659:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5659:6:7"
                                    },
                                    "nativeSrc": "5659:74:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5659:74:7"
                                  },
                                  "nativeSrc": "5659:74:7",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "5659:74:7"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "5552:7:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5552:7:7"
                                },
                                {
                                  "name": "newLen",
                                  "nativeSrc": "5561:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5561:6:7"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "5549:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "5549:2:7"
                              },
                              "nativeSrc": "5549:19:7",
                              "nodeType": "YulFunctionCall",
                              "src": "5549:19:7"
                            },
                            "nativeSrc": "5546:201:7",
                            "nodeType": "YulIf",
                            "src": "5546:201:7"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "5767:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5767:4:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "5781:1:7",
                                          "nodeType": "YulLiteral",
                                          "src": "5781:1:7",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nativeSrc": "5784:6:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "5784:6:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "5777:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "5777:3:7"
                                      },
                                      "nativeSrc": "5777:14:7",
                                      "nodeType": "YulFunctionCall",
                                      "src": "5777:14:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "5793:1:7",
                                      "nodeType": "YulLiteral",
                                      "src": "5793:1:7",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "5773:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "5773:3:7"
                                  },
                                  "nativeSrc": "5773:22:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "5773:22:7"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "5760:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "5760:6:7"
                              },
                              "nativeSrc": "5760:36:7",
                              "nodeType": "YulFunctionCall",
                              "src": "5760:36:7"
                            },
                            "nativeSrc": "5760:36:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "5760:36:7"
                          }
                        ]
                      },
                      "nativeSrc": "5157:649:7",
                      "nodeType": "YulCase",
                      "src": "5157:649:7",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "5162:1:7",
                        "nodeType": "YulLiteral",
                        "src": "5162:1:7",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "5823:234:7",
                        "nodeType": "YulBlock",
                        "src": "5823:234:7",
                        "statements": [
                          {
                            "nativeSrc": "5837:14:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "5837:14:7",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "5850:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5850:1:7",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nativeSrc": "5841:5:7",
                                "nodeType": "YulTypedName",
                                "src": "5841:5:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "5886:67:7",
                              "nodeType": "YulBlock",
                              "src": "5886:67:7",
                              "statements": [
                                {
                                  "nativeSrc": "5904:35:7",
                                  "nodeType": "YulAssignment",
                                  "src": "5904:35:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "5923:3:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "5923:3:7"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "5928:9:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "5928:9:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "5919:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "5919:3:7"
                                        },
                                        "nativeSrc": "5919:19:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "5919:19:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "5913:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5913:5:7"
                                    },
                                    "nativeSrc": "5913:26:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5913:26:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "5904:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "5904:5:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nativeSrc": "5867:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "5867:6:7"
                            },
                            "nativeSrc": "5864:89:7",
                            "nodeType": "YulIf",
                            "src": "5864:89:7"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "5973:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5973:4:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "6032:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "6032:5:7"
                                    },
                                    {
                                      "name": "newLen",
                                      "nativeSrc": "6039:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "6039:6:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nativeSrc": "5979:52:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "5979:52:7"
                                  },
                                  "nativeSrc": "5979:67:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "5979:67:7"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "5966:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "5966:6:7"
                              },
                              "nativeSrc": "5966:81:7",
                              "nodeType": "YulFunctionCall",
                              "src": "5966:81:7"
                            },
                            "nativeSrc": "5966:81:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "5966:81:7"
                          }
                        ]
                      },
                      "nativeSrc": "5815:242:7",
                      "nodeType": "YulCase",
                      "src": "5815:242:7",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nativeSrc": "5137:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "5137:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5145:2:7",
                        "nodeType": "YulLiteral",
                        "src": "5145:2:7",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "5134:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "5134:2:7"
                    },
                    "nativeSrc": "5134:14:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5134:14:7"
                  },
                  "nativeSrc": "5127:930:7",
                  "nodeType": "YulSwitch",
                  "src": "5127:930:7"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nativeSrc": "4764:1299:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "4845:4:7",
                "nodeType": "YulTypedName",
                "src": "4845:4:7",
                "type": ""
              },
              {
                "name": "src",
                "nativeSrc": "4851:3:7",
                "nodeType": "YulTypedName",
                "src": "4851:3:7",
                "type": ""
              }
            ],
            "src": "4764:1299:7"
          },
          {
            "body": {
              "nativeSrc": "6100:95:7",
              "nodeType": "YulBlock",
              "src": "6100:95:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "6117:1:7",
                        "nodeType": "YulLiteral",
                        "src": "6117:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "6124:3:7",
                            "nodeType": "YulLiteral",
                            "src": "6124:3:7",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6129:10:7",
                            "nodeType": "YulLiteral",
                            "src": "6129:10:7",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "6120:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6120:3:7"
                        },
                        "nativeSrc": "6120:20:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6120:20:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6110:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6110:6:7"
                    },
                    "nativeSrc": "6110:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6110:31:7"
                  },
                  "nativeSrc": "6110:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "6110:31:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "6157:1:7",
                        "nodeType": "YulLiteral",
                        "src": "6157:1:7",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6160:4:7",
                        "nodeType": "YulLiteral",
                        "src": "6160:4:7",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6150:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6150:6:7"
                    },
                    "nativeSrc": "6150:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6150:15:7"
                  },
                  "nativeSrc": "6150:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "6150:15:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "6181:1:7",
                        "nodeType": "YulLiteral",
                        "src": "6181:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6184:4:7",
                        "nodeType": "YulLiteral",
                        "src": "6184:4:7",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "6174:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6174:6:7"
                    },
                    "nativeSrc": "6174:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6174:15:7"
                  },
                  "nativeSrc": "6174:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "6174:15:7"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nativeSrc": "6068:127:7",
            "nodeType": "YulFunctionDefinition",
            "src": "6068:127:7"
          }
        ]
      },
      "contents": "{\n    { }\n    function validator_revert_address_payable(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address_payable(value)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_array_address_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let _1 := shl(5, length)\n        let dst := allocate_memory(add(_1, 0x20))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, _1), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := mload(src)\n            validator_revert_address_payable(value)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let array_1 := allocate_memory(add(and(add(length, 0x1f), not(31)), 0x20))\n        mstore(array_1, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(array_1, i), 0x20), mload(add(add(offset, i), 0x20)))\n        }\n        mstore(add(add(array_1, length), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_address_payablet_addresst_addresst_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256t_uint256t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n    {\n        if slt(sub(dataEnd, headStart), 288) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address_payable(value)\n        value0 := value\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        let offset := mload(add(headStart, 96))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value3 := abi_decode_array_address_dyn_fromMemory(add(headStart, offset), dataEnd)\n        let value_1 := 0\n        value_1 := mload(add(headStart, 128))\n        value4 := value_1\n        let value_2 := 0\n        value_2 := mload(add(headStart, 160))\n        value5 := value_2\n        let value_3 := 0\n        value_3 := mload(add(headStart, 192))\n        value6 := value_3\n        let value_4 := 0\n        value_4 := mload(add(headStart, 224))\n        value7 := value_4\n        let offset_1 := mload(add(headStart, 256))\n        if gt(offset_1, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value8 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n}",
      "id": 7,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:35124:7",
        "nodeType": "YulBlock",
        "src": "0:35124:7",
        "statements": [
          {
            "nativeSrc": "6:3:7",
            "nodeType": "YulBlock",
            "src": "6:3:7",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "59:86:7",
              "nodeType": "YulBlock",
              "src": "59:86:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "123:16:7",
                    "nodeType": "YulBlock",
                    "src": "123:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "132:1:7",
                              "nodeType": "YulLiteral",
                              "src": "132:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "135:1:7",
                              "nodeType": "YulLiteral",
                              "src": "135:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "125:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "125:6:7"
                          },
                          "nativeSrc": "125:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "125:12:7"
                        },
                        "nativeSrc": "125:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "125:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "82:5:7",
                            "nodeType": "YulIdentifier",
                            "src": "82:5:7"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "93:5:7",
                                "nodeType": "YulIdentifier",
                                "src": "93:5:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "108:3:7",
                                        "nodeType": "YulLiteral",
                                        "src": "108:3:7",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "113:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "113:1:7",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "104:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "104:3:7"
                                    },
                                    "nativeSrc": "104:11:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "104:11:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "117:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "117:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "100:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "100:3:7"
                                },
                                "nativeSrc": "100:19:7",
                                "nodeType": "YulFunctionCall",
                                "src": "100:19:7"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "89:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "89:3:7"
                            },
                            "nativeSrc": "89:31:7",
                            "nodeType": "YulFunctionCall",
                            "src": "89:31:7"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "79:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "79:2:7"
                        },
                        "nativeSrc": "79:42:7",
                        "nodeType": "YulFunctionCall",
                        "src": "79:42:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "72:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "72:6:7"
                    },
                    "nativeSrc": "72:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "72:50:7"
                  },
                  "nativeSrc": "69:70:7",
                  "nodeType": "YulIf",
                  "src": "69:70:7"
                }
              ]
            },
            "name": "validator_revert_address",
            "nativeSrc": "14:131:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "48:5:7",
                "nodeType": "YulTypedName",
                "src": "48:5:7",
                "type": ""
              }
            ],
            "src": "14:131:7"
          },
          {
            "body": {
              "nativeSrc": "237:280:7",
              "nodeType": "YulBlock",
              "src": "237:280:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "283:16:7",
                    "nodeType": "YulBlock",
                    "src": "283:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "292:1:7",
                              "nodeType": "YulLiteral",
                              "src": "292:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "295:1:7",
                              "nodeType": "YulLiteral",
                              "src": "295:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "285:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "285:6:7"
                          },
                          "nativeSrc": "285:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "285:12:7"
                        },
                        "nativeSrc": "285:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "285:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "258:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "258:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "267:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "267:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "254:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "254:3:7"
                        },
                        "nativeSrc": "254:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "254:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "279:2:7",
                        "nodeType": "YulLiteral",
                        "src": "279:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "250:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "250:3:7"
                    },
                    "nativeSrc": "250:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "250:32:7"
                  },
                  "nativeSrc": "247:52:7",
                  "nodeType": "YulIf",
                  "src": "247:52:7"
                },
                {
                  "nativeSrc": "308:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "308:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "334:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "334:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "321:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "321:12:7"
                    },
                    "nativeSrc": "321:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "321:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "312:5:7",
                      "nodeType": "YulTypedName",
                      "src": "312:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "378:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "378:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "353:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "353:24:7"
                    },
                    "nativeSrc": "353:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "353:31:7"
                  },
                  "nativeSrc": "353:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "353:31:7"
                },
                {
                  "nativeSrc": "393:15:7",
                  "nodeType": "YulAssignment",
                  "src": "393:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "403:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "403:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "393:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "393:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "417:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "417:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "432:1:7",
                    "nodeType": "YulLiteral",
                    "src": "432:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "421:7:7",
                      "nodeType": "YulTypedName",
                      "src": "421:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "442:43:7",
                  "nodeType": "YulAssignment",
                  "src": "442:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "470:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "470:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "481:2:7",
                            "nodeType": "YulLiteral",
                            "src": "481:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "466:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "466:3:7"
                        },
                        "nativeSrc": "466:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "466:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "453:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "453:12:7"
                    },
                    "nativeSrc": "453:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "453:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "442:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "442:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "494:17:7",
                  "nodeType": "YulAssignment",
                  "src": "494:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "504:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "504:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "494:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "494:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nativeSrc": "150:367:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "195:9:7",
                "nodeType": "YulTypedName",
                "src": "195:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "206:7:7",
                "nodeType": "YulTypedName",
                "src": "206:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "218:6:7",
                "nodeType": "YulTypedName",
                "src": "218:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "226:6:7",
                "nodeType": "YulTypedName",
                "src": "226:6:7",
                "type": ""
              }
            ],
            "src": "150:367:7"
          },
          {
            "body": {
              "nativeSrc": "623:76:7",
              "nodeType": "YulBlock",
              "src": "623:76:7",
              "statements": [
                {
                  "nativeSrc": "633:26:7",
                  "nodeType": "YulAssignment",
                  "src": "633:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "645:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "645:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "656:2:7",
                        "nodeType": "YulLiteral",
                        "src": "656:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "641:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "641:3:7"
                    },
                    "nativeSrc": "641:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "641:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "633:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "633:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "675:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "675:9:7"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "686:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "686:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "668:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "668:6:7"
                    },
                    "nativeSrc": "668:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "668:25:7"
                  },
                  "nativeSrc": "668:25:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "668:25:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nativeSrc": "522:177:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "592:9:7",
                "nodeType": "YulTypedName",
                "src": "592:9:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "603:6:7",
                "nodeType": "YulTypedName",
                "src": "603:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "614:4:7",
                "nodeType": "YulTypedName",
                "src": "614:4:7",
                "type": ""
              }
            ],
            "src": "522:177:7"
          },
          {
            "body": {
              "nativeSrc": "748:87:7",
              "nodeType": "YulBlock",
              "src": "748:87:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "813:16:7",
                    "nodeType": "YulBlock",
                    "src": "813:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "822:1:7",
                              "nodeType": "YulLiteral",
                              "src": "822:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "825:1:7",
                              "nodeType": "YulLiteral",
                              "src": "825:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "815:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "815:6:7"
                          },
                          "nativeSrc": "815:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "815:12:7"
                        },
                        "nativeSrc": "815:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "815:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "771:5:7",
                            "nodeType": "YulIdentifier",
                            "src": "771:5:7"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "782:5:7",
                                "nodeType": "YulIdentifier",
                                "src": "782:5:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "793:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "793:3:7",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "798:10:7",
                                    "nodeType": "YulLiteral",
                                    "src": "798:10:7",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "789:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "789:3:7"
                                },
                                "nativeSrc": "789:20:7",
                                "nodeType": "YulFunctionCall",
                                "src": "789:20:7"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "778:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "778:3:7"
                            },
                            "nativeSrc": "778:32:7",
                            "nodeType": "YulFunctionCall",
                            "src": "778:32:7"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "768:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "768:2:7"
                        },
                        "nativeSrc": "768:43:7",
                        "nodeType": "YulFunctionCall",
                        "src": "768:43:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "761:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "761:6:7"
                    },
                    "nativeSrc": "761:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "761:51:7"
                  },
                  "nativeSrc": "758:71:7",
                  "nodeType": "YulIf",
                  "src": "758:71:7"
                }
              ]
            },
            "name": "validator_revert_bytes4",
            "nativeSrc": "704:131:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "737:5:7",
                "nodeType": "YulTypedName",
                "src": "737:5:7",
                "type": ""
              }
            ],
            "src": "704:131:7"
          },
          {
            "body": {
              "nativeSrc": "909:176:7",
              "nodeType": "YulBlock",
              "src": "909:176:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "955:16:7",
                    "nodeType": "YulBlock",
                    "src": "955:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "964:1:7",
                              "nodeType": "YulLiteral",
                              "src": "964:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "967:1:7",
                              "nodeType": "YulLiteral",
                              "src": "967:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "957:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "957:6:7"
                          },
                          "nativeSrc": "957:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "957:12:7"
                        },
                        "nativeSrc": "957:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "957:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "930:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "930:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "939:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "939:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "926:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "926:3:7"
                        },
                        "nativeSrc": "926:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "926:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "951:2:7",
                        "nodeType": "YulLiteral",
                        "src": "951:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "922:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "922:3:7"
                    },
                    "nativeSrc": "922:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "922:32:7"
                  },
                  "nativeSrc": "919:52:7",
                  "nodeType": "YulIf",
                  "src": "919:52:7"
                },
                {
                  "nativeSrc": "980:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "980:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1006:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "1006:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "993:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "993:12:7"
                    },
                    "nativeSrc": "993:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "993:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "984:5:7",
                      "nodeType": "YulTypedName",
                      "src": "984:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "1049:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "1049:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nativeSrc": "1025:23:7",
                      "nodeType": "YulIdentifier",
                      "src": "1025:23:7"
                    },
                    "nativeSrc": "1025:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1025:30:7"
                  },
                  "nativeSrc": "1025:30:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "1025:30:7"
                },
                {
                  "nativeSrc": "1064:15:7",
                  "nodeType": "YulAssignment",
                  "src": "1064:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1074:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "1074:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1064:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1064:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nativeSrc": "840:245:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "875:9:7",
                "nodeType": "YulTypedName",
                "src": "875:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "886:7:7",
                "nodeType": "YulTypedName",
                "src": "886:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "898:6:7",
                "nodeType": "YulTypedName",
                "src": "898:6:7",
                "type": ""
              }
            ],
            "src": "840:245:7"
          },
          {
            "body": {
              "nativeSrc": "1185:92:7",
              "nodeType": "YulBlock",
              "src": "1185:92:7",
              "statements": [
                {
                  "nativeSrc": "1195:26:7",
                  "nodeType": "YulAssignment",
                  "src": "1195:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1207:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "1207:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1218:2:7",
                        "nodeType": "YulLiteral",
                        "src": "1218:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1203:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "1203:3:7"
                    },
                    "nativeSrc": "1203:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1203:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "1195:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "1195:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1237:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "1237:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nativeSrc": "1262:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "1262:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "1255:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "1255:6:7"
                            },
                            "nativeSrc": "1255:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "1255:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nativeSrc": "1248:6:7",
                          "nodeType": "YulIdentifier",
                          "src": "1248:6:7"
                        },
                        "nativeSrc": "1248:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1248:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1230:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1230:6:7"
                    },
                    "nativeSrc": "1230:41:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1230:41:7"
                  },
                  "nativeSrc": "1230:41:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "1230:41:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nativeSrc": "1090:187:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1154:9:7",
                "nodeType": "YulTypedName",
                "src": "1154:9:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1165:6:7",
                "nodeType": "YulTypedName",
                "src": "1165:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1176:4:7",
                "nodeType": "YulTypedName",
                "src": "1176:4:7",
                "type": ""
              }
            ],
            "src": "1090:187:7"
          },
          {
            "body": {
              "nativeSrc": "1355:275:7",
              "nodeType": "YulBlock",
              "src": "1355:275:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1404:16:7",
                    "nodeType": "YulBlock",
                    "src": "1404:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1413:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1413:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1416:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1416:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1406:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1406:6:7"
                          },
                          "nativeSrc": "1406:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1406:12:7"
                        },
                        "nativeSrc": "1406:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1406:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1383:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "1383:6:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1391:4:7",
                                "nodeType": "YulLiteral",
                                "src": "1391:4:7",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1379:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1379:3:7"
                            },
                            "nativeSrc": "1379:17:7",
                            "nodeType": "YulFunctionCall",
                            "src": "1379:17:7"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "1398:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "1398:3:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "1375:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1375:3:7"
                        },
                        "nativeSrc": "1375:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1375:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "1368:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1368:6:7"
                    },
                    "nativeSrc": "1368:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1368:35:7"
                  },
                  "nativeSrc": "1365:55:7",
                  "nodeType": "YulIf",
                  "src": "1365:55:7"
                },
                {
                  "nativeSrc": "1429:30:7",
                  "nodeType": "YulAssignment",
                  "src": "1429:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1452:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1452:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1439:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "1439:12:7"
                    },
                    "nativeSrc": "1439:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1439:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "1429:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1429:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1502:16:7",
                    "nodeType": "YulBlock",
                    "src": "1502:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1511:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1511:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1514:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1514:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1504:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1504:6:7"
                          },
                          "nativeSrc": "1504:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1504:12:7"
                        },
                        "nativeSrc": "1504:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1504:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "1474:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1474:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1482:18:7",
                        "nodeType": "YulLiteral",
                        "src": "1482:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1471:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1471:2:7"
                    },
                    "nativeSrc": "1471:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1471:30:7"
                  },
                  "nativeSrc": "1468:50:7",
                  "nodeType": "YulIf",
                  "src": "1468:50:7"
                },
                {
                  "nativeSrc": "1527:29:7",
                  "nodeType": "YulAssignment",
                  "src": "1527:29:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1543:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1543:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1551:4:7",
                        "nodeType": "YulLiteral",
                        "src": "1551:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1539:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "1539:3:7"
                    },
                    "nativeSrc": "1539:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1539:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nativeSrc": "1527:8:7",
                      "nodeType": "YulIdentifier",
                      "src": "1527:8:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1608:16:7",
                    "nodeType": "YulBlock",
                    "src": "1608:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1617:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1617:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1620:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1620:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1610:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1610:6:7"
                          },
                          "nativeSrc": "1610:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1610:12:7"
                        },
                        "nativeSrc": "1610:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1610:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1579:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "1579:6:7"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1587:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "1587:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1575:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "1575:3:7"
                            },
                            "nativeSrc": "1575:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "1575:19:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1596:4:7",
                            "nodeType": "YulLiteral",
                            "src": "1596:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1571:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1571:3:7"
                        },
                        "nativeSrc": "1571:30:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1571:30:7"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1603:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "1603:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1568:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1568:2:7"
                    },
                    "nativeSrc": "1568:39:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1568:39:7"
                  },
                  "nativeSrc": "1565:59:7",
                  "nodeType": "YulIf",
                  "src": "1565:59:7"
                }
              ]
            },
            "name": "abi_decode_string_calldata",
            "nativeSrc": "1282:348:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "1318:6:7",
                "nodeType": "YulTypedName",
                "src": "1318:6:7",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "1326:3:7",
                "nodeType": "YulTypedName",
                "src": "1326:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nativeSrc": "1334:8:7",
                "nodeType": "YulTypedName",
                "src": "1334:8:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "1344:6:7",
                "nodeType": "YulTypedName",
                "src": "1344:6:7",
                "type": ""
              }
            ],
            "src": "1282:348:7"
          },
          {
            "body": {
              "nativeSrc": "1725:321:7",
              "nodeType": "YulBlock",
              "src": "1725:321:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1771:16:7",
                    "nodeType": "YulBlock",
                    "src": "1771:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1780:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1780:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1783:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1783:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1773:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1773:6:7"
                          },
                          "nativeSrc": "1773:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1773:12:7"
                        },
                        "nativeSrc": "1773:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1773:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1746:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "1746:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1755:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "1755:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1742:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1742:3:7"
                        },
                        "nativeSrc": "1742:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1742:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1767:2:7",
                        "nodeType": "YulLiteral",
                        "src": "1767:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1738:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "1738:3:7"
                    },
                    "nativeSrc": "1738:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1738:32:7"
                  },
                  "nativeSrc": "1735:52:7",
                  "nodeType": "YulIf",
                  "src": "1735:52:7"
                },
                {
                  "nativeSrc": "1796:37:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1796:37:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1823:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "1823:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1810:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "1810:12:7"
                    },
                    "nativeSrc": "1810:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1810:23:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "1800:6:7",
                      "nodeType": "YulTypedName",
                      "src": "1800:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1876:16:7",
                    "nodeType": "YulBlock",
                    "src": "1876:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1885:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1885:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1888:1:7",
                              "nodeType": "YulLiteral",
                              "src": "1888:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1878:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1878:6:7"
                          },
                          "nativeSrc": "1878:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "1878:12:7"
                        },
                        "nativeSrc": "1878:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "1878:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1848:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "1848:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1856:18:7",
                        "nodeType": "YulLiteral",
                        "src": "1856:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1845:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "1845:2:7"
                    },
                    "nativeSrc": "1845:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1845:30:7"
                  },
                  "nativeSrc": "1842:50:7",
                  "nodeType": "YulIf",
                  "src": "1842:50:7"
                },
                {
                  "nativeSrc": "1901:85:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1901:85:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1958:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "1958:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1969:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "1969:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1954:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "1954:3:7"
                        },
                        "nativeSrc": "1954:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "1954:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1978:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "1978:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "1927:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "1927:26:7"
                    },
                    "nativeSrc": "1927:59:7",
                    "nodeType": "YulFunctionCall",
                    "src": "1927:59:7"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "1905:8:7",
                      "nodeType": "YulTypedName",
                      "src": "1905:8:7",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "1915:8:7",
                      "nodeType": "YulTypedName",
                      "src": "1915:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1995:18:7",
                  "nodeType": "YulAssignment",
                  "src": "1995:18:7",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "2005:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "2005:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1995:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "1995:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "2022:18:7",
                  "nodeType": "YulAssignment",
                  "src": "2022:18:7",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "2032:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "2032:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2022:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2022:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptr",
            "nativeSrc": "1635:411:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1683:9:7",
                "nodeType": "YulTypedName",
                "src": "1683:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1694:7:7",
                "nodeType": "YulTypedName",
                "src": "1694:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1706:6:7",
                "nodeType": "YulTypedName",
                "src": "1706:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1714:6:7",
                "nodeType": "YulTypedName",
                "src": "1714:6:7",
                "type": ""
              }
            ],
            "src": "1635:411:7"
          },
          {
            "body": {
              "nativeSrc": "2101:350:7",
              "nodeType": "YulBlock",
              "src": "2101:350:7",
              "statements": [
                {
                  "nativeSrc": "2111:26:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2111:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "2131:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "2131:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "2125:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "2125:5:7"
                    },
                    "nativeSrc": "2125:12:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2125:12:7"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "2115:6:7",
                      "nodeType": "YulTypedName",
                      "src": "2115:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "2153:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "2153:3:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "2158:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "2158:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2146:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2146:6:7"
                    },
                    "nativeSrc": "2146:19:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2146:19:7"
                  },
                  "nativeSrc": "2146:19:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "2146:19:7"
                },
                {
                  "nativeSrc": "2174:10:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2174:10:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "2183:1:7",
                    "nodeType": "YulLiteral",
                    "src": "2183:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nativeSrc": "2178:1:7",
                      "nodeType": "YulTypedName",
                      "src": "2178:1:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2245:87:7",
                    "nodeType": "YulBlock",
                    "src": "2245:87:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nativeSrc": "2274:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "2274:3:7"
                                    },
                                    {
                                      "name": "i",
                                      "nativeSrc": "2279:1:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "2279:1:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "2270:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "2270:3:7"
                                  },
                                  "nativeSrc": "2270:11:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2270:11:7"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "2283:4:7",
                                  "nodeType": "YulLiteral",
                                  "src": "2283:4:7",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "2266:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "2266:3:7"
                              },
                              "nativeSrc": "2266:22:7",
                              "nodeType": "YulFunctionCall",
                              "src": "2266:22:7"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nativeSrc": "2304:5:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "2304:5:7"
                                        },
                                        {
                                          "name": "i",
                                          "nativeSrc": "2311:1:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "2311:1:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "2300:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "2300:3:7"
                                      },
                                      "nativeSrc": "2300:13:7",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2300:13:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "2315:4:7",
                                      "nodeType": "YulLiteral",
                                      "src": "2315:4:7",
                                      "type": "",
                                      "value": "0x20"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "2296:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "2296:3:7"
                                  },
                                  "nativeSrc": "2296:24:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2296:24:7"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "2290:5:7",
                                "nodeType": "YulIdentifier",
                                "src": "2290:5:7"
                              },
                              "nativeSrc": "2290:31:7",
                              "nodeType": "YulFunctionCall",
                              "src": "2290:31:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "2259:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "2259:6:7"
                          },
                          "nativeSrc": "2259:63:7",
                          "nodeType": "YulFunctionCall",
                          "src": "2259:63:7"
                        },
                        "nativeSrc": "2259:63:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "2259:63:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nativeSrc": "2204:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "2204:1:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "2207:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "2207:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "2201:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "2201:2:7"
                    },
                    "nativeSrc": "2201:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2201:13:7"
                  },
                  "nativeSrc": "2193:139:7",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "2215:21:7",
                    "nodeType": "YulBlock",
                    "src": "2215:21:7",
                    "statements": [
                      {
                        "nativeSrc": "2217:17:7",
                        "nodeType": "YulAssignment",
                        "src": "2217:17:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nativeSrc": "2226:1:7",
                              "nodeType": "YulIdentifier",
                              "src": "2226:1:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2229:4:7",
                              "nodeType": "YulLiteral",
                              "src": "2229:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "2222:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "2222:3:7"
                          },
                          "nativeSrc": "2222:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "2222:12:7"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nativeSrc": "2217:1:7",
                            "nodeType": "YulIdentifier",
                            "src": "2217:1:7"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nativeSrc": "2197:3:7",
                    "nodeType": "YulBlock",
                    "src": "2197:3:7",
                    "statements": []
                  },
                  "src": "2193:139:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nativeSrc": "2356:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "2356:3:7"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "2361:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "2361:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "2352:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "2352:3:7"
                            },
                            "nativeSrc": "2352:16:7",
                            "nodeType": "YulFunctionCall",
                            "src": "2352:16:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2370:4:7",
                            "nodeType": "YulLiteral",
                            "src": "2370:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2348:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2348:3:7"
                        },
                        "nativeSrc": "2348:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2348:27:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2377:1:7",
                        "nodeType": "YulLiteral",
                        "src": "2377:1:7",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2341:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2341:6:7"
                    },
                    "nativeSrc": "2341:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2341:38:7"
                  },
                  "nativeSrc": "2341:38:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "2341:38:7"
                },
                {
                  "nativeSrc": "2388:57:7",
                  "nodeType": "YulAssignment",
                  "src": "2388:57:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "2403:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "2403:3:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "2416:6:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "2416:6:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2424:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "2424:2:7",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "2412:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "2412:3:7"
                                },
                                "nativeSrc": "2412:15:7",
                                "nodeType": "YulFunctionCall",
                                "src": "2412:15:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2433:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "2433:2:7",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "2429:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "2429:3:7"
                                },
                                "nativeSrc": "2429:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "2429:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "2408:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "2408:3:7"
                            },
                            "nativeSrc": "2408:29:7",
                            "nodeType": "YulFunctionCall",
                            "src": "2408:29:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2399:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2399:3:7"
                        },
                        "nativeSrc": "2399:39:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2399:39:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2440:4:7",
                        "nodeType": "YulLiteral",
                        "src": "2440:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2395:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "2395:3:7"
                    },
                    "nativeSrc": "2395:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2395:50:7"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "2388:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "2388:3:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nativeSrc": "2051:400:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "2078:5:7",
                "nodeType": "YulTypedName",
                "src": "2078:5:7",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "2085:3:7",
                "nodeType": "YulTypedName",
                "src": "2085:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "2093:3:7",
                "nodeType": "YulTypedName",
                "src": "2093:3:7",
                "type": ""
              }
            ],
            "src": "2051:400:7"
          },
          {
            "body": {
              "nativeSrc": "2577:99:7",
              "nodeType": "YulBlock",
              "src": "2577:99:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2594:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "2594:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2605:2:7",
                        "nodeType": "YulLiteral",
                        "src": "2605:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2587:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2587:6:7"
                    },
                    "nativeSrc": "2587:21:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2587:21:7"
                  },
                  "nativeSrc": "2587:21:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "2587:21:7"
                },
                {
                  "nativeSrc": "2617:53:7",
                  "nodeType": "YulAssignment",
                  "src": "2617:53:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "2643:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "2643:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2655:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2655:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2666:2:7",
                            "nodeType": "YulLiteral",
                            "src": "2666:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2651:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2651:3:7"
                        },
                        "nativeSrc": "2651:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2651:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "2625:17:7",
                      "nodeType": "YulIdentifier",
                      "src": "2625:17:7"
                    },
                    "nativeSrc": "2625:45:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2625:45:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2617:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "2617:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "2456:220:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2546:9:7",
                "nodeType": "YulTypedName",
                "src": "2546:9:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2557:6:7",
                "nodeType": "YulTypedName",
                "src": "2557:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2568:4:7",
                "nodeType": "YulTypedName",
                "src": "2568:4:7",
                "type": ""
              }
            ],
            "src": "2456:220:7"
          },
          {
            "body": {
              "nativeSrc": "2788:439:7",
              "nodeType": "YulBlock",
              "src": "2788:439:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2834:16:7",
                    "nodeType": "YulBlock",
                    "src": "2834:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2843:1:7",
                              "nodeType": "YulLiteral",
                              "src": "2843:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2846:1:7",
                              "nodeType": "YulLiteral",
                              "src": "2846:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2836:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "2836:6:7"
                          },
                          "nativeSrc": "2836:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "2836:12:7"
                        },
                        "nativeSrc": "2836:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "2836:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2809:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "2809:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2818:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2818:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2805:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2805:3:7"
                        },
                        "nativeSrc": "2805:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2805:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2830:2:7",
                        "nodeType": "YulLiteral",
                        "src": "2830:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2801:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "2801:3:7"
                    },
                    "nativeSrc": "2801:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2801:32:7"
                  },
                  "nativeSrc": "2798:52:7",
                  "nodeType": "YulIf",
                  "src": "2798:52:7"
                },
                {
                  "nativeSrc": "2859:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2859:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2885:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "2885:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2872:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "2872:12:7"
                    },
                    "nativeSrc": "2872:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2872:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "2863:5:7",
                      "nodeType": "YulTypedName",
                      "src": "2863:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "2929:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "2929:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "2904:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "2904:24:7"
                    },
                    "nativeSrc": "2904:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2904:31:7"
                  },
                  "nativeSrc": "2904:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "2904:31:7"
                },
                {
                  "nativeSrc": "2944:15:7",
                  "nodeType": "YulAssignment",
                  "src": "2944:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "2954:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "2954:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2944:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "2944:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "2968:46:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2968:46:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2999:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "2999:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3010:2:7",
                            "nodeType": "YulLiteral",
                            "src": "3010:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2995:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "2995:3:7"
                        },
                        "nativeSrc": "2995:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "2995:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2982:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "2982:12:7"
                    },
                    "nativeSrc": "2982:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "2982:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2972:6:7",
                      "nodeType": "YulTypedName",
                      "src": "2972:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3057:16:7",
                    "nodeType": "YulBlock",
                    "src": "3057:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3066:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3066:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3069:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3069:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3059:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3059:6:7"
                          },
                          "nativeSrc": "3059:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3059:12:7"
                        },
                        "nativeSrc": "3059:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3059:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "3029:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "3029:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3037:18:7",
                        "nodeType": "YulLiteral",
                        "src": "3037:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3026:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "3026:2:7"
                    },
                    "nativeSrc": "3026:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3026:30:7"
                  },
                  "nativeSrc": "3023:50:7",
                  "nodeType": "YulIf",
                  "src": "3023:50:7"
                },
                {
                  "nativeSrc": "3082:85:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3082:85:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3139:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3139:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "3150:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3150:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3135:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3135:3:7"
                        },
                        "nativeSrc": "3135:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3135:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "3159:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "3159:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "3108:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "3108:26:7"
                    },
                    "nativeSrc": "3108:59:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3108:59:7"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nativeSrc": "3086:8:7",
                      "nodeType": "YulTypedName",
                      "src": "3086:8:7",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nativeSrc": "3096:8:7",
                      "nodeType": "YulTypedName",
                      "src": "3096:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3176:18:7",
                  "nodeType": "YulAssignment",
                  "src": "3176:18:7",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "3186:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "3186:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "3176:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3176:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "3203:18:7",
                  "nodeType": "YulAssignment",
                  "src": "3203:18:7",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "3213:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "3213:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "3203:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3203:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_string_calldata_ptr",
            "nativeSrc": "2681:546:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2738:9:7",
                "nodeType": "YulTypedName",
                "src": "2738:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2749:7:7",
                "nodeType": "YulTypedName",
                "src": "2749:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2761:6:7",
                "nodeType": "YulTypedName",
                "src": "2761:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "2769:6:7",
                "nodeType": "YulTypedName",
                "src": "2769:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "2777:6:7",
                "nodeType": "YulTypedName",
                "src": "2777:6:7",
                "type": ""
              }
            ],
            "src": "2681:546:7"
          },
          {
            "body": {
              "nativeSrc": "3316:283:7",
              "nodeType": "YulBlock",
              "src": "3316:283:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3365:16:7",
                    "nodeType": "YulBlock",
                    "src": "3365:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3374:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3374:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3377:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3377:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3367:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3367:6:7"
                          },
                          "nativeSrc": "3367:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3367:12:7"
                        },
                        "nativeSrc": "3367:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3367:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "3344:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "3344:6:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3352:4:7",
                                "nodeType": "YulLiteral",
                                "src": "3352:4:7",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "3340:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "3340:3:7"
                            },
                            "nativeSrc": "3340:17:7",
                            "nodeType": "YulFunctionCall",
                            "src": "3340:17:7"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "3359:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "3359:3:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "3336:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3336:3:7"
                        },
                        "nativeSrc": "3336:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3336:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3329:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3329:6:7"
                    },
                    "nativeSrc": "3329:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3329:35:7"
                  },
                  "nativeSrc": "3326:55:7",
                  "nodeType": "YulIf",
                  "src": "3326:55:7"
                },
                {
                  "nativeSrc": "3390:30:7",
                  "nodeType": "YulAssignment",
                  "src": "3390:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "3413:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "3413:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "3400:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "3400:12:7"
                    },
                    "nativeSrc": "3400:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3400:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "3390:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "3390:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3463:16:7",
                    "nodeType": "YulBlock",
                    "src": "3463:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3472:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3472:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3475:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3475:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3465:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3465:6:7"
                          },
                          "nativeSrc": "3465:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3465:12:7"
                        },
                        "nativeSrc": "3465:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3465:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "3435:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "3435:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3443:18:7",
                        "nodeType": "YulLiteral",
                        "src": "3443:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3432:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "3432:2:7"
                    },
                    "nativeSrc": "3432:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3432:30:7"
                  },
                  "nativeSrc": "3429:50:7",
                  "nodeType": "YulIf",
                  "src": "3429:50:7"
                },
                {
                  "nativeSrc": "3488:29:7",
                  "nodeType": "YulAssignment",
                  "src": "3488:29:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "3504:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "3504:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3512:4:7",
                        "nodeType": "YulLiteral",
                        "src": "3512:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3500:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "3500:3:7"
                    },
                    "nativeSrc": "3500:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3500:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nativeSrc": "3488:8:7",
                      "nodeType": "YulIdentifier",
                      "src": "3488:8:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3577:16:7",
                    "nodeType": "YulBlock",
                    "src": "3577:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3586:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3586:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3589:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3589:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3579:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3579:6:7"
                          },
                          "nativeSrc": "3579:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3579:12:7"
                        },
                        "nativeSrc": "3579:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3579:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "3540:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "3540:6:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3552:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "3552:1:7",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nativeSrc": "3555:6:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "3555:6:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "3548:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "3548:3:7"
                                },
                                "nativeSrc": "3548:14:7",
                                "nodeType": "YulFunctionCall",
                                "src": "3548:14:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "3536:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "3536:3:7"
                            },
                            "nativeSrc": "3536:27:7",
                            "nodeType": "YulFunctionCall",
                            "src": "3536:27:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3565:4:7",
                            "nodeType": "YulLiteral",
                            "src": "3565:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3532:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3532:3:7"
                        },
                        "nativeSrc": "3532:38:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3532:38:7"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "3572:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "3572:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3529:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "3529:2:7"
                    },
                    "nativeSrc": "3529:47:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3529:47:7"
                  },
                  "nativeSrc": "3526:67:7",
                  "nodeType": "YulIf",
                  "src": "3526:67:7"
                }
              ]
            },
            "name": "abi_decode_array_uint256_dyn_calldata",
            "nativeSrc": "3232:367:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "3279:6:7",
                "nodeType": "YulTypedName",
                "src": "3279:6:7",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "3287:3:7",
                "nodeType": "YulTypedName",
                "src": "3287:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nativeSrc": "3295:8:7",
                "nodeType": "YulTypedName",
                "src": "3295:8:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "3305:6:7",
                "nodeType": "YulTypedName",
                "src": "3305:6:7",
                "type": ""
              }
            ],
            "src": "3232:367:7"
          },
          {
            "body": {
              "nativeSrc": "3810:879:7",
              "nodeType": "YulBlock",
              "src": "3810:879:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3856:16:7",
                    "nodeType": "YulBlock",
                    "src": "3856:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3865:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3865:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3868:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3868:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3858:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3858:6:7"
                          },
                          "nativeSrc": "3858:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3858:12:7"
                        },
                        "nativeSrc": "3858:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3858:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3831:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "3831:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "3840:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "3840:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3827:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "3827:3:7"
                        },
                        "nativeSrc": "3827:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "3827:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3852:2:7",
                        "nodeType": "YulLiteral",
                        "src": "3852:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "3823:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "3823:3:7"
                    },
                    "nativeSrc": "3823:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3823:32:7"
                  },
                  "nativeSrc": "3820:52:7",
                  "nodeType": "YulIf",
                  "src": "3820:52:7"
                },
                {
                  "nativeSrc": "3881:37:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3881:37:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3908:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "3908:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "3895:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "3895:12:7"
                    },
                    "nativeSrc": "3895:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3895:23:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "3885:6:7",
                      "nodeType": "YulTypedName",
                      "src": "3885:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3961:16:7",
                    "nodeType": "YulBlock",
                    "src": "3961:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3970:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3970:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3973:1:7",
                              "nodeType": "YulLiteral",
                              "src": "3973:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3963:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "3963:6:7"
                          },
                          "nativeSrc": "3963:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "3963:12:7"
                        },
                        "nativeSrc": "3963:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "3963:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "3933:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "3933:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3941:18:7",
                        "nodeType": "YulLiteral",
                        "src": "3941:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3930:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "3930:2:7"
                    },
                    "nativeSrc": "3930:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "3930:30:7"
                  },
                  "nativeSrc": "3927:50:7",
                  "nodeType": "YulIf",
                  "src": "3927:50:7"
                },
                {
                  "nativeSrc": "3986:85:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3986:85:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4043:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "4043:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "4054:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "4054:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4039:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4039:3:7"
                        },
                        "nativeSrc": "4039:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4039:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "4063:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "4063:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "4012:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "4012:26:7"
                    },
                    "nativeSrc": "4012:59:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4012:59:7"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "3990:8:7",
                      "nodeType": "YulTypedName",
                      "src": "3990:8:7",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "4000:8:7",
                      "nodeType": "YulTypedName",
                      "src": "4000:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "4080:18:7",
                  "nodeType": "YulAssignment",
                  "src": "4080:18:7",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "4090:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "4090:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "4080:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4080:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "4107:18:7",
                  "nodeType": "YulAssignment",
                  "src": "4107:18:7",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "4117:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "4117:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "4107:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4107:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "4134:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4134:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4167:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "4167:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4178:2:7",
                            "nodeType": "YulLiteral",
                            "src": "4178:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4163:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4163:3:7"
                        },
                        "nativeSrc": "4163:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4163:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "4150:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "4150:12:7"
                    },
                    "nativeSrc": "4150:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4150:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "4138:8:7",
                      "nodeType": "YulTypedName",
                      "src": "4138:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4227:16:7",
                    "nodeType": "YulBlock",
                    "src": "4227:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4236:1:7",
                              "nodeType": "YulLiteral",
                              "src": "4236:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4239:1:7",
                              "nodeType": "YulLiteral",
                              "src": "4239:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4229:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "4229:6:7"
                          },
                          "nativeSrc": "4229:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4229:12:7"
                        },
                        "nativeSrc": "4229:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "4229:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "4197:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "4197:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4207:18:7",
                        "nodeType": "YulLiteral",
                        "src": "4207:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "4194:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "4194:2:7"
                    },
                    "nativeSrc": "4194:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4194:32:7"
                  },
                  "nativeSrc": "4191:52:7",
                  "nodeType": "YulIf",
                  "src": "4191:52:7"
                },
                {
                  "nativeSrc": "4252:98:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4252:98:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4320:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "4320:9:7"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "4331:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "4331:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4316:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4316:3:7"
                        },
                        "nativeSrc": "4316:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4316:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "4342:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "4342:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nativeSrc": "4278:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "4278:37:7"
                    },
                    "nativeSrc": "4278:72:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4278:72:7"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nativeSrc": "4256:8:7",
                      "nodeType": "YulTypedName",
                      "src": "4256:8:7",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nativeSrc": "4266:8:7",
                      "nodeType": "YulTypedName",
                      "src": "4266:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "4359:18:7",
                  "nodeType": "YulAssignment",
                  "src": "4359:18:7",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "4369:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "4369:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "4359:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4359:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "4386:18:7",
                  "nodeType": "YulAssignment",
                  "src": "4386:18:7",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "4396:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "4396:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "4386:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4386:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "4413:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4413:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4446:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "4446:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4457:2:7",
                            "nodeType": "YulLiteral",
                            "src": "4457:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4442:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4442:3:7"
                        },
                        "nativeSrc": "4442:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4442:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "4429:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "4429:12:7"
                    },
                    "nativeSrc": "4429:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4429:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nativeSrc": "4417:8:7",
                      "nodeType": "YulTypedName",
                      "src": "4417:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4506:16:7",
                    "nodeType": "YulBlock",
                    "src": "4506:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4515:1:7",
                              "nodeType": "YulLiteral",
                              "src": "4515:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4518:1:7",
                              "nodeType": "YulLiteral",
                              "src": "4518:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4508:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "4508:6:7"
                          },
                          "nativeSrc": "4508:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "4508:12:7"
                        },
                        "nativeSrc": "4508:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "4508:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nativeSrc": "4476:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "4476:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4486:18:7",
                        "nodeType": "YulLiteral",
                        "src": "4486:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "4473:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "4473:2:7"
                    },
                    "nativeSrc": "4473:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4473:32:7"
                  },
                  "nativeSrc": "4470:52:7",
                  "nodeType": "YulIf",
                  "src": "4470:52:7"
                },
                {
                  "nativeSrc": "4531:98:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4531:98:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4599:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "4599:9:7"
                          },
                          {
                            "name": "offset_2",
                            "nativeSrc": "4610:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "4610:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4595:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4595:3:7"
                        },
                        "nativeSrc": "4595:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4595:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "4621:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "4621:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nativeSrc": "4557:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "4557:37:7"
                    },
                    "nativeSrc": "4557:72:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4557:72:7"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nativeSrc": "4535:8:7",
                      "nodeType": "YulTypedName",
                      "src": "4535:8:7",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nativeSrc": "4545:8:7",
                      "nodeType": "YulTypedName",
                      "src": "4545:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "4638:18:7",
                  "nodeType": "YulAssignment",
                  "src": "4638:18:7",
                  "value": {
                    "name": "value4_1",
                    "nativeSrc": "4648:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "4648:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "4638:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4638:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "4665:18:7",
                  "nodeType": "YulAssignment",
                  "src": "4665:18:7",
                  "value": {
                    "name": "value5_1",
                    "nativeSrc": "4675:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "4675:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "4665:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4665:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
            "nativeSrc": "3604:1085:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3736:9:7",
                "nodeType": "YulTypedName",
                "src": "3736:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "3747:7:7",
                "nodeType": "YulTypedName",
                "src": "3747:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "3759:6:7",
                "nodeType": "YulTypedName",
                "src": "3759:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "3767:6:7",
                "nodeType": "YulTypedName",
                "src": "3767:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "3775:6:7",
                "nodeType": "YulTypedName",
                "src": "3775:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "3783:6:7",
                "nodeType": "YulTypedName",
                "src": "3783:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "3791:6:7",
                "nodeType": "YulTypedName",
                "src": "3791:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "3799:6:7",
                "nodeType": "YulTypedName",
                "src": "3799:6:7",
                "type": ""
              }
            ],
            "src": "3604:1085:7"
          },
          {
            "body": {
              "nativeSrc": "4811:102:7",
              "nodeType": "YulBlock",
              "src": "4811:102:7",
              "statements": [
                {
                  "nativeSrc": "4821:26:7",
                  "nodeType": "YulAssignment",
                  "src": "4821:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4833:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "4833:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4844:2:7",
                        "nodeType": "YulLiteral",
                        "src": "4844:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4829:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "4829:3:7"
                    },
                    "nativeSrc": "4829:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4829:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4821:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "4821:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4863:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "4863:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "4878:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "4878:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4894:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "4894:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4899:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "4899:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "4890:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "4890:3:7"
                                },
                                "nativeSrc": "4890:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "4890:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4903:1:7",
                                "nodeType": "YulLiteral",
                                "src": "4903:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "4886:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "4886:3:7"
                            },
                            "nativeSrc": "4886:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "4886:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4874:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "4874:3:7"
                        },
                        "nativeSrc": "4874:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "4874:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4856:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "4856:6:7"
                    },
                    "nativeSrc": "4856:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "4856:51:7"
                  },
                  "nativeSrc": "4856:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "4856:51:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed",
            "nativeSrc": "4694:219:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4780:9:7",
                "nodeType": "YulTypedName",
                "src": "4780:9:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4791:6:7",
                "nodeType": "YulTypedName",
                "src": "4791:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "4802:4:7",
                "nodeType": "YulTypedName",
                "src": "4802:4:7",
                "type": ""
              }
            ],
            "src": "4694:219:7"
          },
          {
            "body": {
              "nativeSrc": "5022:404:7",
              "nodeType": "YulBlock",
              "src": "5022:404:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "5068:16:7",
                    "nodeType": "YulBlock",
                    "src": "5068:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5077:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5077:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5080:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5080:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5070:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "5070:6:7"
                          },
                          "nativeSrc": "5070:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "5070:12:7"
                        },
                        "nativeSrc": "5070:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "5070:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "5043:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "5043:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "5052:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "5052:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "5039:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "5039:3:7"
                        },
                        "nativeSrc": "5039:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "5039:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5064:2:7",
                        "nodeType": "YulLiteral",
                        "src": "5064:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "5035:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "5035:3:7"
                    },
                    "nativeSrc": "5035:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5035:32:7"
                  },
                  "nativeSrc": "5032:52:7",
                  "nodeType": "YulIf",
                  "src": "5032:52:7"
                },
                {
                  "nativeSrc": "5093:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5093:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5119:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "5119:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5106:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "5106:12:7"
                    },
                    "nativeSrc": "5106:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5106:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "5097:5:7",
                      "nodeType": "YulTypedName",
                      "src": "5097:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "5163:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "5163:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "5138:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "5138:24:7"
                    },
                    "nativeSrc": "5138:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5138:31:7"
                  },
                  "nativeSrc": "5138:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "5138:31:7"
                },
                {
                  "nativeSrc": "5178:15:7",
                  "nodeType": "YulAssignment",
                  "src": "5178:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "5188:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "5188:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "5178:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "5178:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "5202:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5202:47:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5234:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "5234:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5245:2:7",
                            "nodeType": "YulLiteral",
                            "src": "5245:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5230:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "5230:3:7"
                        },
                        "nativeSrc": "5230:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "5230:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5217:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "5217:12:7"
                    },
                    "nativeSrc": "5217:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5217:32:7"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "5206:7:7",
                      "nodeType": "YulTypedName",
                      "src": "5206:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "5283:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "5283:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "5258:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "5258:24:7"
                    },
                    "nativeSrc": "5258:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5258:33:7"
                  },
                  "nativeSrc": "5258:33:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "5258:33:7"
                },
                {
                  "nativeSrc": "5300:17:7",
                  "nodeType": "YulAssignment",
                  "src": "5300:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "5310:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "5310:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "5300:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "5300:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "5326:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5326:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "5341:1:7",
                    "nodeType": "YulLiteral",
                    "src": "5341:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "5330:7:7",
                      "nodeType": "YulTypedName",
                      "src": "5330:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "5351:43:7",
                  "nodeType": "YulAssignment",
                  "src": "5351:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5379:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "5379:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5390:2:7",
                            "nodeType": "YulLiteral",
                            "src": "5390:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5375:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "5375:3:7"
                        },
                        "nativeSrc": "5375:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "5375:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5362:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "5362:12:7"
                    },
                    "nativeSrc": "5362:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5362:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "5351:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "5351:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "5403:17:7",
                  "nodeType": "YulAssignment",
                  "src": "5403:17:7",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "5413:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "5413:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "5403:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "5403:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256",
            "nativeSrc": "4918:508:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4972:9:7",
                "nodeType": "YulTypedName",
                "src": "4972:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "4983:7:7",
                "nodeType": "YulTypedName",
                "src": "4983:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "4995:6:7",
                "nodeType": "YulTypedName",
                "src": "4995:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "5003:6:7",
                "nodeType": "YulTypedName",
                "src": "5003:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "5011:6:7",
                "nodeType": "YulTypedName",
                "src": "5011:6:7",
                "type": ""
              }
            ],
            "src": "4918:508:7"
          },
          {
            "body": {
              "nativeSrc": "5501:177:7",
              "nodeType": "YulBlock",
              "src": "5501:177:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "5547:16:7",
                    "nodeType": "YulBlock",
                    "src": "5547:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5556:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5556:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5559:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5559:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5549:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "5549:6:7"
                          },
                          "nativeSrc": "5549:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "5549:12:7"
                        },
                        "nativeSrc": "5549:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "5549:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "5522:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "5522:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "5531:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "5531:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "5518:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "5518:3:7"
                        },
                        "nativeSrc": "5518:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "5518:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5543:2:7",
                        "nodeType": "YulLiteral",
                        "src": "5543:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "5514:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "5514:3:7"
                    },
                    "nativeSrc": "5514:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5514:32:7"
                  },
                  "nativeSrc": "5511:52:7",
                  "nodeType": "YulIf",
                  "src": "5511:52:7"
                },
                {
                  "nativeSrc": "5572:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5572:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5598:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "5598:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5585:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "5585:12:7"
                    },
                    "nativeSrc": "5585:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5585:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "5576:5:7",
                      "nodeType": "YulTypedName",
                      "src": "5576:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "5642:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "5642:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "5617:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "5617:24:7"
                    },
                    "nativeSrc": "5617:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5617:31:7"
                  },
                  "nativeSrc": "5617:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "5617:31:7"
                },
                {
                  "nativeSrc": "5657:15:7",
                  "nodeType": "YulAssignment",
                  "src": "5657:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "5667:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "5667:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "5657:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "5657:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nativeSrc": "5431:247:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "5467:9:7",
                "nodeType": "YulTypedName",
                "src": "5467:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "5478:7:7",
                "nodeType": "YulTypedName",
                "src": "5478:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "5490:6:7",
                "nodeType": "YulTypedName",
                "src": "5490:6:7",
                "type": ""
              }
            ],
            "src": "5431:247:7"
          },
          {
            "body": {
              "nativeSrc": "5870:971:7",
              "nodeType": "YulBlock",
              "src": "5870:971:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "5917:16:7",
                    "nodeType": "YulBlock",
                    "src": "5917:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5926:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5926:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5929:1:7",
                              "nodeType": "YulLiteral",
                              "src": "5929:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5919:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "5919:6:7"
                          },
                          "nativeSrc": "5919:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "5919:12:7"
                        },
                        "nativeSrc": "5919:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "5919:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "5891:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "5891:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "5900:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "5900:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "5887:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "5887:3:7"
                        },
                        "nativeSrc": "5887:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "5887:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5912:3:7",
                        "nodeType": "YulLiteral",
                        "src": "5912:3:7",
                        "type": "",
                        "value": "256"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "5883:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "5883:3:7"
                    },
                    "nativeSrc": "5883:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5883:33:7"
                  },
                  "nativeSrc": "5880:53:7",
                  "nodeType": "YulIf",
                  "src": "5880:53:7"
                },
                {
                  "nativeSrc": "5942:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5942:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5968:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "5968:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5955:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "5955:12:7"
                    },
                    "nativeSrc": "5955:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5955:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "5946:5:7",
                      "nodeType": "YulTypedName",
                      "src": "5946:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "6012:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "6012:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "5987:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "5987:24:7"
                    },
                    "nativeSrc": "5987:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "5987:31:7"
                  },
                  "nativeSrc": "5987:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "5987:31:7"
                },
                {
                  "nativeSrc": "6027:15:7",
                  "nodeType": "YulAssignment",
                  "src": "6027:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "6037:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "6037:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "6027:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6027:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6051:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6051:47:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6083:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6083:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6094:2:7",
                            "nodeType": "YulLiteral",
                            "src": "6094:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6079:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6079:3:7"
                        },
                        "nativeSrc": "6079:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6079:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6066:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "6066:12:7"
                    },
                    "nativeSrc": "6066:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6066:32:7"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "6055:7:7",
                      "nodeType": "YulTypedName",
                      "src": "6055:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "6132:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "6132:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "6107:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "6107:24:7"
                    },
                    "nativeSrc": "6107:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6107:33:7"
                  },
                  "nativeSrc": "6107:33:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "6107:33:7"
                },
                {
                  "nativeSrc": "6149:17:7",
                  "nodeType": "YulAssignment",
                  "src": "6149:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "6159:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "6159:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "6149:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6149:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6175:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6175:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "6190:1:7",
                    "nodeType": "YulLiteral",
                    "src": "6190:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "6179:7:7",
                      "nodeType": "YulTypedName",
                      "src": "6179:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6200:43:7",
                  "nodeType": "YulAssignment",
                  "src": "6200:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6228:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6228:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6239:2:7",
                            "nodeType": "YulLiteral",
                            "src": "6239:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6224:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6224:3:7"
                        },
                        "nativeSrc": "6224:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6224:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6211:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "6211:12:7"
                    },
                    "nativeSrc": "6211:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6211:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "6200:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "6200:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6252:17:7",
                  "nodeType": "YulAssignment",
                  "src": "6252:17:7",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "6262:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "6262:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "6252:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6252:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6278:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6278:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "6293:1:7",
                    "nodeType": "YulLiteral",
                    "src": "6293:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_3",
                      "nativeSrc": "6282:7:7",
                      "nodeType": "YulTypedName",
                      "src": "6282:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6303:43:7",
                  "nodeType": "YulAssignment",
                  "src": "6303:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6331:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6331:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6342:2:7",
                            "nodeType": "YulLiteral",
                            "src": "6342:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6327:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6327:3:7"
                        },
                        "nativeSrc": "6327:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6327:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6314:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "6314:12:7"
                    },
                    "nativeSrc": "6314:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6314:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_3",
                      "nativeSrc": "6303:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "6303:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6355:17:7",
                  "nodeType": "YulAssignment",
                  "src": "6355:17:7",
                  "value": {
                    "name": "value_3",
                    "nativeSrc": "6365:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "6365:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "6355:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6355:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6381:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6381:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "6396:1:7",
                    "nodeType": "YulLiteral",
                    "src": "6396:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_4",
                      "nativeSrc": "6385:7:7",
                      "nodeType": "YulTypedName",
                      "src": "6385:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6406:44:7",
                  "nodeType": "YulAssignment",
                  "src": "6406:44:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6434:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6434:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6445:3:7",
                            "nodeType": "YulLiteral",
                            "src": "6445:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6430:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6430:3:7"
                        },
                        "nativeSrc": "6430:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6430:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6417:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "6417:12:7"
                    },
                    "nativeSrc": "6417:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6417:33:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_4",
                      "nativeSrc": "6406:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "6406:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6459:17:7",
                  "nodeType": "YulAssignment",
                  "src": "6459:17:7",
                  "value": {
                    "name": "value_4",
                    "nativeSrc": "6469:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "6469:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "6459:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6459:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6485:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6485:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6517:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6517:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6528:3:7",
                            "nodeType": "YulLiteral",
                            "src": "6528:3:7",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6513:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6513:3:7"
                        },
                        "nativeSrc": "6513:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6513:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6500:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "6500:12:7"
                    },
                    "nativeSrc": "6500:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6500:33:7"
                  },
                  "variables": [
                    {
                      "name": "value_5",
                      "nativeSrc": "6489:7:7",
                      "nodeType": "YulTypedName",
                      "src": "6489:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "6585:16:7",
                    "nodeType": "YulBlock",
                    "src": "6585:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6594:1:7",
                              "nodeType": "YulLiteral",
                              "src": "6594:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6597:1:7",
                              "nodeType": "YulLiteral",
                              "src": "6597:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6587:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "6587:6:7"
                          },
                          "nativeSrc": "6587:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "6587:12:7"
                        },
                        "nativeSrc": "6587:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "6587:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_5",
                            "nativeSrc": "6555:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "6555:7:7"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_5",
                                "nativeSrc": "6568:7:7",
                                "nodeType": "YulIdentifier",
                                "src": "6568:7:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "6577:4:7",
                                "nodeType": "YulLiteral",
                                "src": "6577:4:7",
                                "type": "",
                                "value": "0xff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "6564:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "6564:3:7"
                            },
                            "nativeSrc": "6564:18:7",
                            "nodeType": "YulFunctionCall",
                            "src": "6564:18:7"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "6552:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "6552:2:7"
                        },
                        "nativeSrc": "6552:31:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6552:31:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "6545:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6545:6:7"
                    },
                    "nativeSrc": "6545:39:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6545:39:7"
                  },
                  "nativeSrc": "6542:59:7",
                  "nodeType": "YulIf",
                  "src": "6542:59:7"
                },
                {
                  "nativeSrc": "6610:17:7",
                  "nodeType": "YulAssignment",
                  "src": "6610:17:7",
                  "value": {
                    "name": "value_5",
                    "nativeSrc": "6620:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "6620:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "6610:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6610:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6636:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6636:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "6651:1:7",
                    "nodeType": "YulLiteral",
                    "src": "6651:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_6",
                      "nativeSrc": "6640:7:7",
                      "nodeType": "YulTypedName",
                      "src": "6640:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6661:44:7",
                  "nodeType": "YulAssignment",
                  "src": "6661:44:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6689:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6689:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6700:3:7",
                            "nodeType": "YulLiteral",
                            "src": "6700:3:7",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6685:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6685:3:7"
                        },
                        "nativeSrc": "6685:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6685:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6672:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "6672:12:7"
                    },
                    "nativeSrc": "6672:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6672:33:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_6",
                      "nativeSrc": "6661:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "6661:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6714:17:7",
                  "nodeType": "YulAssignment",
                  "src": "6714:17:7",
                  "value": {
                    "name": "value_6",
                    "nativeSrc": "6724:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "6724:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nativeSrc": "6714:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6714:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6740:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6740:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "6755:1:7",
                    "nodeType": "YulLiteral",
                    "src": "6755:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_7",
                      "nativeSrc": "6744:7:7",
                      "nodeType": "YulTypedName",
                      "src": "6744:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6765:44:7",
                  "nodeType": "YulAssignment",
                  "src": "6765:44:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6793:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6793:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6804:3:7",
                            "nodeType": "YulLiteral",
                            "src": "6804:3:7",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6789:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6789:3:7"
                        },
                        "nativeSrc": "6789:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6789:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6776:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "6776:12:7"
                    },
                    "nativeSrc": "6776:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6776:33:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_7",
                      "nativeSrc": "6765:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "6765:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "6818:17:7",
                  "nodeType": "YulAssignment",
                  "src": "6818:17:7",
                  "value": {
                    "name": "value_7",
                    "nativeSrc": "6828:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "6828:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value7",
                      "nativeSrc": "6818:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "6818:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint8t_bytes32t_bytes32",
            "nativeSrc": "5683:1158:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "5780:9:7",
                "nodeType": "YulTypedName",
                "src": "5780:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "5791:7:7",
                "nodeType": "YulTypedName",
                "src": "5791:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "5803:6:7",
                "nodeType": "YulTypedName",
                "src": "5803:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "5811:6:7",
                "nodeType": "YulTypedName",
                "src": "5811:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "5819:6:7",
                "nodeType": "YulTypedName",
                "src": "5819:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "5827:6:7",
                "nodeType": "YulTypedName",
                "src": "5827:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "5835:6:7",
                "nodeType": "YulTypedName",
                "src": "5835:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "5843:6:7",
                "nodeType": "YulTypedName",
                "src": "5843:6:7",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "5851:6:7",
                "nodeType": "YulTypedName",
                "src": "5851:6:7",
                "type": ""
              },
              {
                "name": "value7",
                "nativeSrc": "5859:6:7",
                "nodeType": "YulTypedName",
                "src": "5859:6:7",
                "type": ""
              }
            ],
            "src": "5683:1158:7"
          },
          {
            "body": {
              "nativeSrc": "6930:332:7",
              "nodeType": "YulBlock",
              "src": "6930:332:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "6976:16:7",
                    "nodeType": "YulBlock",
                    "src": "6976:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6985:1:7",
                              "nodeType": "YulLiteral",
                              "src": "6985:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6988:1:7",
                              "nodeType": "YulLiteral",
                              "src": "6988:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6978:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "6978:6:7"
                          },
                          "nativeSrc": "6978:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "6978:12:7"
                        },
                        "nativeSrc": "6978:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "6978:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "6951:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "6951:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "6960:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "6960:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "6947:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "6947:3:7"
                        },
                        "nativeSrc": "6947:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "6947:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6972:2:7",
                        "nodeType": "YulLiteral",
                        "src": "6972:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "6943:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "6943:3:7"
                    },
                    "nativeSrc": "6943:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "6943:32:7"
                  },
                  "nativeSrc": "6940:52:7",
                  "nodeType": "YulIf",
                  "src": "6940:52:7"
                },
                {
                  "nativeSrc": "7001:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "7001:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7027:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "7027:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "7014:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "7014:12:7"
                    },
                    "nativeSrc": "7014:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7014:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "7005:5:7",
                      "nodeType": "YulTypedName",
                      "src": "7005:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "7071:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "7071:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "7046:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "7046:24:7"
                    },
                    "nativeSrc": "7046:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7046:31:7"
                  },
                  "nativeSrc": "7046:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "7046:31:7"
                },
                {
                  "nativeSrc": "7086:15:7",
                  "nodeType": "YulAssignment",
                  "src": "7086:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "7096:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "7096:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "7086:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "7086:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "7110:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "7110:47:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7142:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "7142:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7153:2:7",
                            "nodeType": "YulLiteral",
                            "src": "7153:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7138:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "7138:3:7"
                        },
                        "nativeSrc": "7138:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "7138:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "7125:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "7125:12:7"
                    },
                    "nativeSrc": "7125:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7125:32:7"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "7114:7:7",
                      "nodeType": "YulTypedName",
                      "src": "7114:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "7214:16:7",
                    "nodeType": "YulBlock",
                    "src": "7214:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "7223:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7223:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "7226:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7226:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "7216:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "7216:6:7"
                          },
                          "nativeSrc": "7216:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "7216:12:7"
                        },
                        "nativeSrc": "7216:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "7216:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nativeSrc": "7179:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "7179:7:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nativeSrc": "7202:7:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "7202:7:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "7195:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "7195:6:7"
                                },
                                "nativeSrc": "7195:15:7",
                                "nodeType": "YulFunctionCall",
                                "src": "7195:15:7"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "7188:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "7188:6:7"
                            },
                            "nativeSrc": "7188:23:7",
                            "nodeType": "YulFunctionCall",
                            "src": "7188:23:7"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "7176:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "7176:2:7"
                        },
                        "nativeSrc": "7176:36:7",
                        "nodeType": "YulFunctionCall",
                        "src": "7176:36:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "7169:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "7169:6:7"
                    },
                    "nativeSrc": "7169:44:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7169:44:7"
                  },
                  "nativeSrc": "7166:64:7",
                  "nodeType": "YulIf",
                  "src": "7166:64:7"
                },
                {
                  "nativeSrc": "7239:17:7",
                  "nodeType": "YulAssignment",
                  "src": "7239:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "7249:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "7249:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "7239:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "7239:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bool",
            "nativeSrc": "6846:416:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6888:9:7",
                "nodeType": "YulTypedName",
                "src": "6888:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "6899:7:7",
                "nodeType": "YulTypedName",
                "src": "6899:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "6911:6:7",
                "nodeType": "YulTypedName",
                "src": "6911:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "6919:6:7",
                "nodeType": "YulTypedName",
                "src": "6919:6:7",
                "type": ""
              }
            ],
            "src": "6846:416:7"
          },
          {
            "body": {
              "nativeSrc": "7345:177:7",
              "nodeType": "YulBlock",
              "src": "7345:177:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "7391:16:7",
                    "nodeType": "YulBlock",
                    "src": "7391:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "7400:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7400:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "7403:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7403:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "7393:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "7393:6:7"
                          },
                          "nativeSrc": "7393:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "7393:12:7"
                        },
                        "nativeSrc": "7393:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "7393:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "7366:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "7366:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "7375:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "7375:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "7362:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "7362:3:7"
                        },
                        "nativeSrc": "7362:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "7362:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7387:2:7",
                        "nodeType": "YulLiteral",
                        "src": "7387:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "7358:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "7358:3:7"
                    },
                    "nativeSrc": "7358:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7358:32:7"
                  },
                  "nativeSrc": "7355:52:7",
                  "nodeType": "YulIf",
                  "src": "7355:52:7"
                },
                {
                  "nativeSrc": "7416:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "7416:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7442:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "7442:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "7429:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "7429:12:7"
                    },
                    "nativeSrc": "7429:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7429:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "7420:5:7",
                      "nodeType": "YulTypedName",
                      "src": "7420:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "7486:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "7486:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "7461:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "7461:24:7"
                    },
                    "nativeSrc": "7461:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7461:31:7"
                  },
                  "nativeSrc": "7461:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "7461:31:7"
                },
                {
                  "nativeSrc": "7501:15:7",
                  "nodeType": "YulAssignment",
                  "src": "7501:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "7511:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "7511:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "7501:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "7501:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_payable",
            "nativeSrc": "7267:255:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "7311:9:7",
                "nodeType": "YulTypedName",
                "src": "7311:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "7322:7:7",
                "nodeType": "YulTypedName",
                "src": "7322:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "7334:6:7",
                "nodeType": "YulTypedName",
                "src": "7334:6:7",
                "type": ""
              }
            ],
            "src": "7267:255:7"
          },
          {
            "body": {
              "nativeSrc": "7597:156:7",
              "nodeType": "YulBlock",
              "src": "7597:156:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "7643:16:7",
                    "nodeType": "YulBlock",
                    "src": "7643:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "7652:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7652:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "7655:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7655:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "7645:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "7645:6:7"
                          },
                          "nativeSrc": "7645:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "7645:12:7"
                        },
                        "nativeSrc": "7645:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "7645:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "7618:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "7618:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "7627:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "7627:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "7614:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "7614:3:7"
                        },
                        "nativeSrc": "7614:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "7614:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7639:2:7",
                        "nodeType": "YulLiteral",
                        "src": "7639:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "7610:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "7610:3:7"
                    },
                    "nativeSrc": "7610:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7610:32:7"
                  },
                  "nativeSrc": "7607:52:7",
                  "nodeType": "YulIf",
                  "src": "7607:52:7"
                },
                {
                  "nativeSrc": "7668:14:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "7668:14:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "7681:1:7",
                    "nodeType": "YulLiteral",
                    "src": "7681:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "7672:5:7",
                      "nodeType": "YulTypedName",
                      "src": "7672:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "7691:32:7",
                  "nodeType": "YulAssignment",
                  "src": "7691:32:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7713:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "7713:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "7700:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "7700:12:7"
                    },
                    "nativeSrc": "7700:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7700:23:7"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "7691:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "7691:5:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "7732:15:7",
                  "nodeType": "YulAssignment",
                  "src": "7732:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "7742:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "7742:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "7732:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "7732:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nativeSrc": "7527:226:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "7563:9:7",
                "nodeType": "YulTypedName",
                "src": "7563:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "7574:7:7",
                "nodeType": "YulTypedName",
                "src": "7574:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "7586:6:7",
                "nodeType": "YulTypedName",
                "src": "7586:6:7",
                "type": ""
              }
            ],
            "src": "7527:226:7"
          },
          {
            "body": {
              "nativeSrc": "7828:86:7",
              "nodeType": "YulBlock",
              "src": "7828:86:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "7868:16:7",
                    "nodeType": "YulBlock",
                    "src": "7868:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "7877:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7877:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "7880:1:7",
                              "nodeType": "YulLiteral",
                              "src": "7880:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "7870:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "7870:6:7"
                          },
                          "nativeSrc": "7870:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "7870:12:7"
                        },
                        "nativeSrc": "7870:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "7870:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "end",
                            "nativeSrc": "7849:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "7849:3:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "7854:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "7854:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "7845:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "7845:3:7"
                        },
                        "nativeSrc": "7845:16:7",
                        "nodeType": "YulFunctionCall",
                        "src": "7845:16:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7863:3:7",
                        "nodeType": "YulLiteral",
                        "src": "7863:3:7",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "7841:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "7841:3:7"
                    },
                    "nativeSrc": "7841:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "7841:26:7"
                  },
                  "nativeSrc": "7838:46:7",
                  "nodeType": "YulIf",
                  "src": "7838:46:7"
                },
                {
                  "nativeSrc": "7893:15:7",
                  "nodeType": "YulAssignment",
                  "src": "7893:15:7",
                  "value": {
                    "name": "offset",
                    "nativeSrc": "7902:6:7",
                    "nodeType": "YulIdentifier",
                    "src": "7902:6:7"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "7893:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "7893:5:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_struct_OpsInfo_calldata",
            "nativeSrc": "7758:156:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "7802:6:7",
                "nodeType": "YulTypedName",
                "src": "7802:6:7",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "7810:3:7",
                "nodeType": "YulTypedName",
                "src": "7810:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "7818:5:7",
                "nodeType": "YulTypedName",
                "src": "7818:5:7",
                "type": ""
              }
            ],
            "src": "7758:156:7"
          },
          {
            "body": {
              "nativeSrc": "7989:85:7",
              "nodeType": "YulBlock",
              "src": "7989:85:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "8028:16:7",
                    "nodeType": "YulBlock",
                    "src": "8028:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8037:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8037:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8040:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8040:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8030:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "8030:6:7"
                          },
                          "nativeSrc": "8030:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "8030:12:7"
                        },
                        "nativeSrc": "8030:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "8030:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "end",
                            "nativeSrc": "8010:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "8010:3:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "8015:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "8015:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "8006:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "8006:3:7"
                        },
                        "nativeSrc": "8006:16:7",
                        "nodeType": "YulFunctionCall",
                        "src": "8006:16:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8024:2:7",
                        "nodeType": "YulLiteral",
                        "src": "8024:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "8002:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "8002:3:7"
                    },
                    "nativeSrc": "8002:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8002:25:7"
                  },
                  "nativeSrc": "7999:45:7",
                  "nodeType": "YulIf",
                  "src": "7999:45:7"
                },
                {
                  "nativeSrc": "8053:15:7",
                  "nodeType": "YulAssignment",
                  "src": "8053:15:7",
                  "value": {
                    "name": "offset",
                    "nativeSrc": "8062:6:7",
                    "nodeType": "YulIdentifier",
                    "src": "8062:6:7"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "8053:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "8053:5:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_struct_MVOinfo_calldata",
            "nativeSrc": "7919:155:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "7963:6:7",
                "nodeType": "YulTypedName",
                "src": "7963:6:7",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "7971:3:7",
                "nodeType": "YulTypedName",
                "src": "7971:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "7979:5:7",
                "nodeType": "YulTypedName",
                "src": "7979:5:7",
                "type": ""
              }
            ],
            "src": "7919:155:7"
          },
          {
            "body": {
              "nativeSrc": "8237:583:7",
              "nodeType": "YulBlock",
              "src": "8237:583:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "8283:16:7",
                    "nodeType": "YulBlock",
                    "src": "8283:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8292:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8292:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8295:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8295:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8285:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "8285:6:7"
                          },
                          "nativeSrc": "8285:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "8285:12:7"
                        },
                        "nativeSrc": "8285:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "8285:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "8258:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "8258:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "8267:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "8267:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "8254:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "8254:3:7"
                        },
                        "nativeSrc": "8254:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "8254:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8279:2:7",
                        "nodeType": "YulLiteral",
                        "src": "8279:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "8250:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "8250:3:7"
                    },
                    "nativeSrc": "8250:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8250:32:7"
                  },
                  "nativeSrc": "8247:52:7",
                  "nodeType": "YulIf",
                  "src": "8247:52:7"
                },
                {
                  "nativeSrc": "8308:37:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8308:37:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "8335:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "8335:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8322:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "8322:12:7"
                    },
                    "nativeSrc": "8322:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8322:23:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "8312:6:7",
                      "nodeType": "YulTypedName",
                      "src": "8312:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "8388:16:7",
                    "nodeType": "YulBlock",
                    "src": "8388:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8397:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8397:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8400:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8400:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8390:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "8390:6:7"
                          },
                          "nativeSrc": "8390:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "8390:12:7"
                        },
                        "nativeSrc": "8390:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "8390:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "8360:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "8360:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8368:18:7",
                        "nodeType": "YulLiteral",
                        "src": "8368:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "8357:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "8357:2:7"
                    },
                    "nativeSrc": "8357:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8357:30:7"
                  },
                  "nativeSrc": "8354:50:7",
                  "nodeType": "YulIf",
                  "src": "8354:50:7"
                },
                {
                  "nativeSrc": "8413:77:7",
                  "nodeType": "YulAssignment",
                  "src": "8413:77:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8462:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "8462:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "8473:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "8473:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8458:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "8458:3:7"
                        },
                        "nativeSrc": "8458:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "8458:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "8482:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "8482:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_struct_OpsInfo_calldata",
                      "nativeSrc": "8423:34:7",
                      "nodeType": "YulIdentifier",
                      "src": "8423:34:7"
                    },
                    "nativeSrc": "8423:67:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8423:67:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "8413:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "8413:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "8499:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8499:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8532:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "8532:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8543:2:7",
                            "nodeType": "YulLiteral",
                            "src": "8543:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8528:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "8528:3:7"
                        },
                        "nativeSrc": "8528:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "8528:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8515:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "8515:12:7"
                    },
                    "nativeSrc": "8515:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8515:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "8503:8:7",
                      "nodeType": "YulTypedName",
                      "src": "8503:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "8592:16:7",
                    "nodeType": "YulBlock",
                    "src": "8592:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8601:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8601:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8604:1:7",
                              "nodeType": "YulLiteral",
                              "src": "8604:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8594:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "8594:6:7"
                          },
                          "nativeSrc": "8594:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "8594:12:7"
                        },
                        "nativeSrc": "8594:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "8594:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "8562:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "8562:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8572:18:7",
                        "nodeType": "YulLiteral",
                        "src": "8572:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "8559:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "8559:2:7"
                    },
                    "nativeSrc": "8559:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8559:32:7"
                  },
                  "nativeSrc": "8556:52:7",
                  "nodeType": "YulIf",
                  "src": "8556:52:7"
                },
                {
                  "nativeSrc": "8617:79:7",
                  "nodeType": "YulAssignment",
                  "src": "8617:79:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8666:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "8666:9:7"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "8677:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "8677:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8662:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "8662:3:7"
                        },
                        "nativeSrc": "8662:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "8662:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "8688:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "8688:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_struct_MVOinfo_calldata",
                      "nativeSrc": "8627:34:7",
                      "nodeType": "YulIdentifier",
                      "src": "8627:34:7"
                    },
                    "nativeSrc": "8627:69:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8627:69:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "8617:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "8617:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "8705:45:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8705:45:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8735:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "8735:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8746:2:7",
                            "nodeType": "YulLiteral",
                            "src": "8746:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8731:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "8731:3:7"
                        },
                        "nativeSrc": "8731:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "8731:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8718:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "8718:12:7"
                    },
                    "nativeSrc": "8718:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8718:32:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "8709:5:7",
                      "nodeType": "YulTypedName",
                      "src": "8709:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "8784:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "8784:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "8759:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "8759:24:7"
                    },
                    "nativeSrc": "8759:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "8759:31:7"
                  },
                  "nativeSrc": "8759:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "8759:31:7"
                },
                {
                  "nativeSrc": "8799:15:7",
                  "nodeType": "YulAssignment",
                  "src": "8799:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "8809:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "8809:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "8799:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "8799:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_struct$_OpsInfo_$3659_calldata_ptrt_struct$_MVOinfo_$3667_calldata_ptrt_address",
            "nativeSrc": "8079:741:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "8187:9:7",
                "nodeType": "YulTypedName",
                "src": "8187:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "8198:7:7",
                "nodeType": "YulTypedName",
                "src": "8198:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "8210:6:7",
                "nodeType": "YulTypedName",
                "src": "8210:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "8218:6:7",
                "nodeType": "YulTypedName",
                "src": "8218:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "8226:6:7",
                "nodeType": "YulTypedName",
                "src": "8226:6:7",
                "type": ""
              }
            ],
            "src": "8079:741:7"
          },
          {
            "body": {
              "nativeSrc": "9087:1143:7",
              "nodeType": "YulBlock",
              "src": "9087:1143:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "9134:16:7",
                    "nodeType": "YulBlock",
                    "src": "9134:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9143:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9143:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9146:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9146:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9136:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "9136:6:7"
                          },
                          "nativeSrc": "9136:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "9136:12:7"
                        },
                        "nativeSrc": "9136:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "9136:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "9108:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "9108:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "9117:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "9117:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "9104:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "9104:3:7"
                        },
                        "nativeSrc": "9104:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "9104:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9129:3:7",
                        "nodeType": "YulLiteral",
                        "src": "9129:3:7",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "9100:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "9100:3:7"
                    },
                    "nativeSrc": "9100:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9100:33:7"
                  },
                  "nativeSrc": "9097:53:7",
                  "nodeType": "YulIf",
                  "src": "9097:53:7"
                },
                {
                  "nativeSrc": "9159:37:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9159:37:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9186:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "9186:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9173:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "9173:12:7"
                    },
                    "nativeSrc": "9173:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9173:23:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "9163:6:7",
                      "nodeType": "YulTypedName",
                      "src": "9163:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "9239:16:7",
                    "nodeType": "YulBlock",
                    "src": "9239:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9248:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9248:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9251:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9251:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9241:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "9241:6:7"
                          },
                          "nativeSrc": "9241:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "9241:12:7"
                        },
                        "nativeSrc": "9241:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "9241:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "9211:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "9211:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9219:18:7",
                        "nodeType": "YulLiteral",
                        "src": "9219:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "9208:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "9208:2:7"
                    },
                    "nativeSrc": "9208:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9208:30:7"
                  },
                  "nativeSrc": "9205:50:7",
                  "nodeType": "YulIf",
                  "src": "9205:50:7"
                },
                {
                  "nativeSrc": "9264:77:7",
                  "nodeType": "YulAssignment",
                  "src": "9264:77:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9313:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "9313:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "9324:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "9324:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9309:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "9309:3:7"
                        },
                        "nativeSrc": "9309:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "9309:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "9333:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "9333:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_struct_OpsInfo_calldata",
                      "nativeSrc": "9274:34:7",
                      "nodeType": "YulIdentifier",
                      "src": "9274:34:7"
                    },
                    "nativeSrc": "9274:67:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9274:67:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "9264:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "9264:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "9350:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9350:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9383:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "9383:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9394:2:7",
                            "nodeType": "YulLiteral",
                            "src": "9394:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9379:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "9379:3:7"
                        },
                        "nativeSrc": "9379:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "9379:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9366:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "9366:12:7"
                    },
                    "nativeSrc": "9366:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9366:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "9354:8:7",
                      "nodeType": "YulTypedName",
                      "src": "9354:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "9443:16:7",
                    "nodeType": "YulBlock",
                    "src": "9443:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9452:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9452:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9455:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9455:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9445:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "9445:6:7"
                          },
                          "nativeSrc": "9445:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "9445:12:7"
                        },
                        "nativeSrc": "9445:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "9445:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "9413:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "9413:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9423:18:7",
                        "nodeType": "YulLiteral",
                        "src": "9423:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "9410:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "9410:2:7"
                    },
                    "nativeSrc": "9410:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9410:32:7"
                  },
                  "nativeSrc": "9407:52:7",
                  "nodeType": "YulIf",
                  "src": "9407:52:7"
                },
                {
                  "nativeSrc": "9468:79:7",
                  "nodeType": "YulAssignment",
                  "src": "9468:79:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9517:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "9517:9:7"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "9528:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "9528:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9513:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "9513:3:7"
                        },
                        "nativeSrc": "9513:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "9513:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "9539:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "9539:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_struct_MVOinfo_calldata",
                      "nativeSrc": "9478:34:7",
                      "nodeType": "YulIdentifier",
                      "src": "9478:34:7"
                    },
                    "nativeSrc": "9478:69:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9478:69:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "9468:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "9468:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "9556:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9556:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9589:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "9589:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9600:2:7",
                            "nodeType": "YulLiteral",
                            "src": "9600:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9585:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "9585:3:7"
                        },
                        "nativeSrc": "9585:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "9585:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9572:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "9572:12:7"
                    },
                    "nativeSrc": "9572:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9572:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nativeSrc": "9560:8:7",
                      "nodeType": "YulTypedName",
                      "src": "9560:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "9649:16:7",
                    "nodeType": "YulBlock",
                    "src": "9649:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9658:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9658:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9661:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9661:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9651:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "9651:6:7"
                          },
                          "nativeSrc": "9651:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "9651:12:7"
                        },
                        "nativeSrc": "9651:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "9651:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nativeSrc": "9619:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "9619:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9629:18:7",
                        "nodeType": "YulLiteral",
                        "src": "9629:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "9616:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "9616:2:7"
                    },
                    "nativeSrc": "9616:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9616:32:7"
                  },
                  "nativeSrc": "9613:52:7",
                  "nodeType": "YulIf",
                  "src": "9613:52:7"
                },
                {
                  "nativeSrc": "9674:98:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9674:98:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9742:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "9742:9:7"
                          },
                          {
                            "name": "offset_2",
                            "nativeSrc": "9753:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "9753:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9738:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "9738:3:7"
                        },
                        "nativeSrc": "9738:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "9738:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "9764:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "9764:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nativeSrc": "9700:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "9700:37:7"
                    },
                    "nativeSrc": "9700:72:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9700:72:7"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nativeSrc": "9678:8:7",
                      "nodeType": "YulTypedName",
                      "src": "9678:8:7",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nativeSrc": "9688:8:7",
                      "nodeType": "YulTypedName",
                      "src": "9688:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "9781:18:7",
                  "nodeType": "YulAssignment",
                  "src": "9781:18:7",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "9791:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "9791:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "9781:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "9781:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "9808:18:7",
                  "nodeType": "YulAssignment",
                  "src": "9808:18:7",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "9818:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "9818:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "9808:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "9808:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "9835:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9835:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9868:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "9868:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9879:2:7",
                            "nodeType": "YulLiteral",
                            "src": "9879:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9864:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "9864:3:7"
                        },
                        "nativeSrc": "9864:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "9864:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9851:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "9851:12:7"
                    },
                    "nativeSrc": "9851:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9851:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_3",
                      "nativeSrc": "9839:8:7",
                      "nodeType": "YulTypedName",
                      "src": "9839:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "9928:16:7",
                    "nodeType": "YulBlock",
                    "src": "9928:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9937:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9937:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9940:1:7",
                              "nodeType": "YulLiteral",
                              "src": "9940:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9930:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "9930:6:7"
                          },
                          "nativeSrc": "9930:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "9930:12:7"
                        },
                        "nativeSrc": "9930:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "9930:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_3",
                        "nativeSrc": "9898:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "9898:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9908:18:7",
                        "nodeType": "YulLiteral",
                        "src": "9908:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "9895:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "9895:2:7"
                    },
                    "nativeSrc": "9895:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9895:32:7"
                  },
                  "nativeSrc": "9892:52:7",
                  "nodeType": "YulIf",
                  "src": "9892:52:7"
                },
                {
                  "nativeSrc": "9953:98:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9953:98:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10021:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "10021:9:7"
                          },
                          {
                            "name": "offset_3",
                            "nativeSrc": "10032:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "10032:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "10017:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "10017:3:7"
                        },
                        "nativeSrc": "10017:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "10017:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "10043:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "10043:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nativeSrc": "9979:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "9979:37:7"
                    },
                    "nativeSrc": "9979:72:7",
                    "nodeType": "YulFunctionCall",
                    "src": "9979:72:7"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nativeSrc": "9957:8:7",
                      "nodeType": "YulTypedName",
                      "src": "9957:8:7",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nativeSrc": "9967:8:7",
                      "nodeType": "YulTypedName",
                      "src": "9967:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "10060:18:7",
                  "nodeType": "YulAssignment",
                  "src": "10060:18:7",
                  "value": {
                    "name": "value4_1",
                    "nativeSrc": "10070:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "10070:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "10060:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "10060:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "10087:18:7",
                  "nodeType": "YulAssignment",
                  "src": "10087:18:7",
                  "value": {
                    "name": "value5_1",
                    "nativeSrc": "10097:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "10097:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "10087:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "10087:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "10114:46:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10114:46:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10144:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "10144:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10155:3:7",
                            "nodeType": "YulLiteral",
                            "src": "10155:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "10140:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "10140:3:7"
                        },
                        "nativeSrc": "10140:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "10140:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "10127:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "10127:12:7"
                    },
                    "nativeSrc": "10127:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10127:33:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "10118:5:7",
                      "nodeType": "YulTypedName",
                      "src": "10118:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "10194:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "10194:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "10169:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "10169:24:7"
                    },
                    "nativeSrc": "10169:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10169:31:7"
                  },
                  "nativeSrc": "10169:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "10169:31:7"
                },
                {
                  "nativeSrc": "10209:15:7",
                  "nodeType": "YulAssignment",
                  "src": "10209:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "10219:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "10219:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nativeSrc": "10209:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "10209:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_struct$_OpsInfo_$3659_calldata_ptrt_struct$_MVOinfo_$3667_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_array$_t_bytes16_$dyn_calldata_ptrt_address",
            "nativeSrc": "8825:1405:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "9005:9:7",
                "nodeType": "YulTypedName",
                "src": "9005:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "9016:7:7",
                "nodeType": "YulTypedName",
                "src": "9016:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "9028:6:7",
                "nodeType": "YulTypedName",
                "src": "9028:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "9036:6:7",
                "nodeType": "YulTypedName",
                "src": "9036:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "9044:6:7",
                "nodeType": "YulTypedName",
                "src": "9044:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "9052:6:7",
                "nodeType": "YulTypedName",
                "src": "9052:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "9060:6:7",
                "nodeType": "YulTypedName",
                "src": "9060:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "9068:6:7",
                "nodeType": "YulTypedName",
                "src": "9068:6:7",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "9076:6:7",
                "nodeType": "YulTypedName",
                "src": "9076:6:7",
                "type": ""
              }
            ],
            "src": "8825:1405:7"
          },
          {
            "body": {
              "nativeSrc": "10267:95:7",
              "nodeType": "YulBlock",
              "src": "10267:95:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "10284:1:7",
                        "nodeType": "YulLiteral",
                        "src": "10284:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "10291:3:7",
                            "nodeType": "YulLiteral",
                            "src": "10291:3:7",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10296:10:7",
                            "nodeType": "YulLiteral",
                            "src": "10296:10:7",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "10287:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "10287:3:7"
                        },
                        "nativeSrc": "10287:20:7",
                        "nodeType": "YulFunctionCall",
                        "src": "10287:20:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10277:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "10277:6:7"
                    },
                    "nativeSrc": "10277:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10277:31:7"
                  },
                  "nativeSrc": "10277:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "10277:31:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "10324:1:7",
                        "nodeType": "YulLiteral",
                        "src": "10324:1:7",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10327:4:7",
                        "nodeType": "YulLiteral",
                        "src": "10327:4:7",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10317:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "10317:6:7"
                    },
                    "nativeSrc": "10317:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10317:15:7"
                  },
                  "nativeSrc": "10317:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "10317:15:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "10348:1:7",
                        "nodeType": "YulLiteral",
                        "src": "10348:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10351:4:7",
                        "nodeType": "YulLiteral",
                        "src": "10351:4:7",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "10341:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "10341:6:7"
                    },
                    "nativeSrc": "10341:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10341:15:7"
                  },
                  "nativeSrc": "10341:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "10341:15:7"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "10235:127:7",
            "nodeType": "YulFunctionDefinition",
            "src": "10235:127:7"
          },
          {
            "body": {
              "nativeSrc": "10447:865:7",
              "nodeType": "YulBlock",
              "src": "10447:865:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "10493:16:7",
                    "nodeType": "YulBlock",
                    "src": "10493:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10502:1:7",
                              "nodeType": "YulLiteral",
                              "src": "10502:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10505:1:7",
                              "nodeType": "YulLiteral",
                              "src": "10505:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10495:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "10495:6:7"
                          },
                          "nativeSrc": "10495:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "10495:12:7"
                        },
                        "nativeSrc": "10495:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "10495:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "10468:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "10468:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "10477:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "10477:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "10464:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "10464:3:7"
                        },
                        "nativeSrc": "10464:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "10464:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10489:2:7",
                        "nodeType": "YulLiteral",
                        "src": "10489:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "10460:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "10460:3:7"
                    },
                    "nativeSrc": "10460:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10460:32:7"
                  },
                  "nativeSrc": "10457:52:7",
                  "nodeType": "YulIf",
                  "src": "10457:52:7"
                },
                {
                  "nativeSrc": "10518:37:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10518:37:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "10545:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "10545:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "10532:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "10532:12:7"
                    },
                    "nativeSrc": "10532:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10532:23:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "10522:6:7",
                      "nodeType": "YulTypedName",
                      "src": "10522:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "10598:16:7",
                    "nodeType": "YulBlock",
                    "src": "10598:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10607:1:7",
                              "nodeType": "YulLiteral",
                              "src": "10607:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10610:1:7",
                              "nodeType": "YulLiteral",
                              "src": "10610:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10600:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "10600:6:7"
                          },
                          "nativeSrc": "10600:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "10600:12:7"
                        },
                        "nativeSrc": "10600:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "10600:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "10570:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "10570:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10578:18:7",
                        "nodeType": "YulLiteral",
                        "src": "10578:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "10567:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "10567:2:7"
                    },
                    "nativeSrc": "10567:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10567:30:7"
                  },
                  "nativeSrc": "10564:50:7",
                  "nodeType": "YulIf",
                  "src": "10564:50:7"
                },
                {
                  "nativeSrc": "10623:32:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10623:32:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "10637:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "10637:9:7"
                      },
                      {
                        "name": "offset",
                        "nativeSrc": "10648:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "10648:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "10633:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "10633:3:7"
                    },
                    "nativeSrc": "10633:22:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10633:22:7"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "10627:2:7",
                      "nodeType": "YulTypedName",
                      "src": "10627:2:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "10703:16:7",
                    "nodeType": "YulBlock",
                    "src": "10703:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10712:1:7",
                              "nodeType": "YulLiteral",
                              "src": "10712:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10715:1:7",
                              "nodeType": "YulLiteral",
                              "src": "10715:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10705:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "10705:6:7"
                          },
                          "nativeSrc": "10705:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "10705:12:7"
                        },
                        "nativeSrc": "10705:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "10705:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "10682:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "10682:2:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "10686:4:7",
                                "nodeType": "YulLiteral",
                                "src": "10686:4:7",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "10678:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "10678:3:7"
                            },
                            "nativeSrc": "10678:13:7",
                            "nodeType": "YulFunctionCall",
                            "src": "10678:13:7"
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "10693:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "10693:7:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "10674:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "10674:3:7"
                        },
                        "nativeSrc": "10674:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "10674:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "10667:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "10667:6:7"
                    },
                    "nativeSrc": "10667:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10667:35:7"
                  },
                  "nativeSrc": "10664:55:7",
                  "nodeType": "YulIf",
                  "src": "10664:55:7"
                },
                {
                  "nativeSrc": "10728:30:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10728:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "10755:2:7",
                        "nodeType": "YulIdentifier",
                        "src": "10755:2:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "10742:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "10742:12:7"
                    },
                    "nativeSrc": "10742:16:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10742:16:7"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "10732:6:7",
                      "nodeType": "YulTypedName",
                      "src": "10732:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "10801:22:7",
                    "nodeType": "YulBlock",
                    "src": "10801:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "10803:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "10803:16:7"
                          },
                          "nativeSrc": "10803:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "10803:18:7"
                        },
                        "nativeSrc": "10803:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "10803:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "10773:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "10773:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10781:18:7",
                        "nodeType": "YulLiteral",
                        "src": "10781:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "10770:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "10770:2:7"
                    },
                    "nativeSrc": "10770:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10770:30:7"
                  },
                  "nativeSrc": "10767:56:7",
                  "nodeType": "YulIf",
                  "src": "10767:56:7"
                },
                {
                  "nativeSrc": "10832:23:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10832:23:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "10852:2:7",
                        "nodeType": "YulLiteral",
                        "src": "10852:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "10846:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "10846:5:7"
                    },
                    "nativeSrc": "10846:9:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10846:9:7"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "10836:6:7",
                      "nodeType": "YulTypedName",
                      "src": "10836:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "10864:85:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10864:85:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "10886:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "10886:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "10910:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "10910:6:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "10918:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "10918:4:7",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "10906:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "10906:3:7"
                                    },
                                    "nativeSrc": "10906:17:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "10906:17:7"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "10929:2:7",
                                        "nodeType": "YulLiteral",
                                        "src": "10929:2:7",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "10925:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "10925:3:7"
                                    },
                                    "nativeSrc": "10925:7:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "10925:7:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "10902:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "10902:3:7"
                                },
                                "nativeSrc": "10902:31:7",
                                "nodeType": "YulFunctionCall",
                                "src": "10902:31:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "10935:2:7",
                                "nodeType": "YulLiteral",
                                "src": "10935:2:7",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "10898:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "10898:3:7"
                            },
                            "nativeSrc": "10898:40:7",
                            "nodeType": "YulFunctionCall",
                            "src": "10898:40:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "10944:2:7",
                                "nodeType": "YulLiteral",
                                "src": "10944:2:7",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "10940:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "10940:3:7"
                            },
                            "nativeSrc": "10940:7:7",
                            "nodeType": "YulFunctionCall",
                            "src": "10940:7:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "10894:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "10894:3:7"
                        },
                        "nativeSrc": "10894:54:7",
                        "nodeType": "YulFunctionCall",
                        "src": "10894:54:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "10882:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "10882:3:7"
                    },
                    "nativeSrc": "10882:67:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10882:67:7"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "10868:10:7",
                      "nodeType": "YulTypedName",
                      "src": "10868:10:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "11024:22:7",
                    "nodeType": "YulBlock",
                    "src": "11024:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "11026:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "11026:16:7"
                          },
                          "nativeSrc": "11026:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "11026:18:7"
                        },
                        "nativeSrc": "11026:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "11026:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "10967:10:7",
                            "nodeType": "YulIdentifier",
                            "src": "10967:10:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10979:18:7",
                            "nodeType": "YulLiteral",
                            "src": "10979:18:7",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "10964:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "10964:2:7"
                        },
                        "nativeSrc": "10964:34:7",
                        "nodeType": "YulFunctionCall",
                        "src": "10964:34:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "11003:10:7",
                            "nodeType": "YulIdentifier",
                            "src": "11003:10:7"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "11015:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "11015:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "11000:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "11000:2:7"
                        },
                        "nativeSrc": "11000:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11000:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "10961:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "10961:2:7"
                    },
                    "nativeSrc": "10961:62:7",
                    "nodeType": "YulFunctionCall",
                    "src": "10961:62:7"
                  },
                  "nativeSrc": "10958:88:7",
                  "nodeType": "YulIf",
                  "src": "10958:88:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "11062:2:7",
                        "nodeType": "YulLiteral",
                        "src": "11062:2:7",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "11066:10:7",
                        "nodeType": "YulIdentifier",
                        "src": "11066:10:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11055:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "11055:6:7"
                    },
                    "nativeSrc": "11055:22:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11055:22:7"
                  },
                  "nativeSrc": "11055:22:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "11055:22:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "11093:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "11093:6:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "11101:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "11101:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11086:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "11086:6:7"
                    },
                    "nativeSrc": "11086:22:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11086:22:7"
                  },
                  "nativeSrc": "11086:22:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "11086:22:7"
                },
                {
                  "body": {
                    "nativeSrc": "11158:16:7",
                    "nodeType": "YulBlock",
                    "src": "11158:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "11167:1:7",
                              "nodeType": "YulLiteral",
                              "src": "11167:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "11170:1:7",
                              "nodeType": "YulLiteral",
                              "src": "11170:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "11160:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "11160:6:7"
                          },
                          "nativeSrc": "11160:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "11160:12:7"
                        },
                        "nativeSrc": "11160:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "11160:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "11131:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "11131:2:7"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "11135:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "11135:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "11127:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "11127:3:7"
                            },
                            "nativeSrc": "11127:15:7",
                            "nodeType": "YulFunctionCall",
                            "src": "11127:15:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11144:2:7",
                            "nodeType": "YulLiteral",
                            "src": "11144:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11123:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "11123:3:7"
                        },
                        "nativeSrc": "11123:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11123:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "11149:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "11149:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "11120:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "11120:2:7"
                    },
                    "nativeSrc": "11120:37:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11120:37:7"
                  },
                  "nativeSrc": "11117:57:7",
                  "nodeType": "YulIf",
                  "src": "11117:57:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "11200:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "11200:6:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11208:2:7",
                            "nodeType": "YulLiteral",
                            "src": "11208:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11196:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "11196:3:7"
                        },
                        "nativeSrc": "11196:15:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11196:15:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nativeSrc": "11217:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "11217:2:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11221:2:7",
                            "nodeType": "YulLiteral",
                            "src": "11221:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11213:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "11213:3:7"
                        },
                        "nativeSrc": "11213:11:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11213:11:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "11226:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "11226:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "11183:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "11183:12:7"
                    },
                    "nativeSrc": "11183:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11183:50:7"
                  },
                  "nativeSrc": "11183:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "11183:50:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nativeSrc": "11257:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "11257:6:7"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "11265:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "11265:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "11253:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "11253:3:7"
                            },
                            "nativeSrc": "11253:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "11253:19:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11274:2:7",
                            "nodeType": "YulLiteral",
                            "src": "11274:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11249:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "11249:3:7"
                        },
                        "nativeSrc": "11249:28:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11249:28:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11279:1:7",
                        "nodeType": "YulLiteral",
                        "src": "11279:1:7",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11242:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "11242:6:7"
                    },
                    "nativeSrc": "11242:39:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11242:39:7"
                  },
                  "nativeSrc": "11242:39:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "11242:39:7"
                },
                {
                  "nativeSrc": "11290:16:7",
                  "nodeType": "YulAssignment",
                  "src": "11290:16:7",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "11300:6:7",
                    "nodeType": "YulIdentifier",
                    "src": "11300:6:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "11290:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "11290:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptr",
            "nativeSrc": "10367:945:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "10413:9:7",
                "nodeType": "YulTypedName",
                "src": "10413:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "10424:7:7",
                "nodeType": "YulTypedName",
                "src": "10424:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "10436:6:7",
                "nodeType": "YulTypedName",
                "src": "10436:6:7",
                "type": ""
              }
            ],
            "src": "10367:945:7"
          },
          {
            "body": {
              "nativeSrc": "11418:102:7",
              "nodeType": "YulBlock",
              "src": "11418:102:7",
              "statements": [
                {
                  "nativeSrc": "11428:26:7",
                  "nodeType": "YulAssignment",
                  "src": "11428:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "11440:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "11440:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11451:2:7",
                        "nodeType": "YulLiteral",
                        "src": "11451:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "11436:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "11436:3:7"
                    },
                    "nativeSrc": "11436:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11436:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "11428:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "11428:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "11470:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "11470:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "11485:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "11485:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "11501:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "11501:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "11506:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "11506:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "11497:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "11497:3:7"
                                },
                                "nativeSrc": "11497:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "11497:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "11510:1:7",
                                "nodeType": "YulLiteral",
                                "src": "11510:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "11493:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "11493:3:7"
                            },
                            "nativeSrc": "11493:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "11493:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "11481:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "11481:3:7"
                        },
                        "nativeSrc": "11481:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11481:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "11463:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "11463:6:7"
                    },
                    "nativeSrc": "11463:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11463:51:7"
                  },
                  "nativeSrc": "11463:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "11463:51:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nativeSrc": "11317:203:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "11387:9:7",
                "nodeType": "YulTypedName",
                "src": "11387:9:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "11398:6:7",
                "nodeType": "YulTypedName",
                "src": "11398:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "11409:4:7",
                "nodeType": "YulTypedName",
                "src": "11409:4:7",
                "type": ""
              }
            ],
            "src": "11317:203:7"
          },
          {
            "body": {
              "nativeSrc": "11752:1123:7",
              "nodeType": "YulBlock",
              "src": "11752:1123:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "11799:16:7",
                    "nodeType": "YulBlock",
                    "src": "11799:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "11808:1:7",
                              "nodeType": "YulLiteral",
                              "src": "11808:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "11811:1:7",
                              "nodeType": "YulLiteral",
                              "src": "11811:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "11801:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "11801:6:7"
                          },
                          "nativeSrc": "11801:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "11801:12:7"
                        },
                        "nativeSrc": "11801:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "11801:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "11773:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "11773:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "11782:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "11782:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "11769:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "11769:3:7"
                        },
                        "nativeSrc": "11769:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11769:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11794:3:7",
                        "nodeType": "YulLiteral",
                        "src": "11794:3:7",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "11765:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "11765:3:7"
                    },
                    "nativeSrc": "11765:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11765:33:7"
                  },
                  "nativeSrc": "11762:53:7",
                  "nodeType": "YulIf",
                  "src": "11762:53:7"
                },
                {
                  "nativeSrc": "11824:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11824:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "11850:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "11850:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "11837:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "11837:12:7"
                    },
                    "nativeSrc": "11837:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11837:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "11828:5:7",
                      "nodeType": "YulTypedName",
                      "src": "11828:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "11894:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "11894:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "11869:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "11869:24:7"
                    },
                    "nativeSrc": "11869:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11869:31:7"
                  },
                  "nativeSrc": "11869:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "11869:31:7"
                },
                {
                  "nativeSrc": "11909:15:7",
                  "nodeType": "YulAssignment",
                  "src": "11909:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "11919:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "11919:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "11909:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "11909:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "11933:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11933:47:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "11965:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "11965:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11976:2:7",
                            "nodeType": "YulLiteral",
                            "src": "11976:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11961:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "11961:3:7"
                        },
                        "nativeSrc": "11961:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "11961:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "11948:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "11948:12:7"
                    },
                    "nativeSrc": "11948:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11948:32:7"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "11937:7:7",
                      "nodeType": "YulTypedName",
                      "src": "11937:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "12014:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "12014:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "11989:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "11989:24:7"
                    },
                    "nativeSrc": "11989:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "11989:33:7"
                  },
                  "nativeSrc": "11989:33:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "11989:33:7"
                },
                {
                  "nativeSrc": "12031:17:7",
                  "nodeType": "YulAssignment",
                  "src": "12031:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "12041:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "12041:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "12031:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "12031:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "12057:46:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12057:46:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12088:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "12088:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12099:2:7",
                            "nodeType": "YulLiteral",
                            "src": "12099:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12084:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "12084:3:7"
                        },
                        "nativeSrc": "12084:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "12084:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "12071:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "12071:12:7"
                    },
                    "nativeSrc": "12071:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12071:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "12061:6:7",
                      "nodeType": "YulTypedName",
                      "src": "12061:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "12146:16:7",
                    "nodeType": "YulBlock",
                    "src": "12146:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "12155:1:7",
                              "nodeType": "YulLiteral",
                              "src": "12155:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "12158:1:7",
                              "nodeType": "YulLiteral",
                              "src": "12158:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "12148:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "12148:6:7"
                          },
                          "nativeSrc": "12148:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "12148:12:7"
                        },
                        "nativeSrc": "12148:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "12148:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "12118:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "12118:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12126:18:7",
                        "nodeType": "YulLiteral",
                        "src": "12126:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "12115:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "12115:2:7"
                    },
                    "nativeSrc": "12115:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12115:30:7"
                  },
                  "nativeSrc": "12112:50:7",
                  "nodeType": "YulIf",
                  "src": "12112:50:7"
                },
                {
                  "nativeSrc": "12171:96:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12171:96:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12239:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "12239:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "12250:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "12250:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12235:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "12235:3:7"
                        },
                        "nativeSrc": "12235:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "12235:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "12259:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "12259:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nativeSrc": "12197:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "12197:37:7"
                    },
                    "nativeSrc": "12197:70:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12197:70:7"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nativeSrc": "12175:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12175:8:7",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nativeSrc": "12185:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12185:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "12276:18:7",
                  "nodeType": "YulAssignment",
                  "src": "12276:18:7",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "12286:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "12286:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "12276:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "12276:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "12303:18:7",
                  "nodeType": "YulAssignment",
                  "src": "12303:18:7",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "12313:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "12313:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "12303:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "12303:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "12330:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12330:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12363:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "12363:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12374:2:7",
                            "nodeType": "YulLiteral",
                            "src": "12374:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12359:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "12359:3:7"
                        },
                        "nativeSrc": "12359:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "12359:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "12346:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "12346:12:7"
                    },
                    "nativeSrc": "12346:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12346:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "12334:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12334:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "12423:16:7",
                    "nodeType": "YulBlock",
                    "src": "12423:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "12432:1:7",
                              "nodeType": "YulLiteral",
                              "src": "12432:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "12435:1:7",
                              "nodeType": "YulLiteral",
                              "src": "12435:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "12425:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "12425:6:7"
                          },
                          "nativeSrc": "12425:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "12425:12:7"
                        },
                        "nativeSrc": "12425:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "12425:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "12393:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "12393:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12403:18:7",
                        "nodeType": "YulLiteral",
                        "src": "12403:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "12390:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "12390:2:7"
                    },
                    "nativeSrc": "12390:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12390:32:7"
                  },
                  "nativeSrc": "12387:52:7",
                  "nodeType": "YulIf",
                  "src": "12387:52:7"
                },
                {
                  "nativeSrc": "12448:98:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12448:98:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12516:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "12516:9:7"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "12527:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "12527:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12512:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "12512:3:7"
                        },
                        "nativeSrc": "12512:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "12512:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "12538:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "12538:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nativeSrc": "12474:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "12474:37:7"
                    },
                    "nativeSrc": "12474:72:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12474:72:7"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nativeSrc": "12452:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12452:8:7",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nativeSrc": "12462:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12462:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "12555:18:7",
                  "nodeType": "YulAssignment",
                  "src": "12555:18:7",
                  "value": {
                    "name": "value4_1",
                    "nativeSrc": "12565:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "12565:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "12555:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "12555:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "12582:18:7",
                  "nodeType": "YulAssignment",
                  "src": "12582:18:7",
                  "value": {
                    "name": "value5_1",
                    "nativeSrc": "12592:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "12592:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "12582:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "12582:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "12609:49:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12609:49:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12642:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "12642:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12653:3:7",
                            "nodeType": "YulLiteral",
                            "src": "12653:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12638:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "12638:3:7"
                        },
                        "nativeSrc": "12638:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "12638:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "12625:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "12625:12:7"
                    },
                    "nativeSrc": "12625:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12625:33:7"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nativeSrc": "12613:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12613:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "12703:16:7",
                    "nodeType": "YulBlock",
                    "src": "12703:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "12712:1:7",
                              "nodeType": "YulLiteral",
                              "src": "12712:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "12715:1:7",
                              "nodeType": "YulLiteral",
                              "src": "12715:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "12705:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "12705:6:7"
                          },
                          "nativeSrc": "12705:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "12705:12:7"
                        },
                        "nativeSrc": "12705:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "12705:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nativeSrc": "12673:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "12673:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12683:18:7",
                        "nodeType": "YulLiteral",
                        "src": "12683:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "12670:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "12670:2:7"
                    },
                    "nativeSrc": "12670:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12670:32:7"
                  },
                  "nativeSrc": "12667:52:7",
                  "nodeType": "YulIf",
                  "src": "12667:52:7"
                },
                {
                  "nativeSrc": "12728:87:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12728:87:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12785:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "12785:9:7"
                          },
                          {
                            "name": "offset_2",
                            "nativeSrc": "12796:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "12796:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12781:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "12781:3:7"
                        },
                        "nativeSrc": "12781:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "12781:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "12807:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "12807:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "12754:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "12754:26:7"
                    },
                    "nativeSrc": "12754:61:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12754:61:7"
                  },
                  "variables": [
                    {
                      "name": "value6_1",
                      "nativeSrc": "12732:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12732:8:7",
                      "type": ""
                    },
                    {
                      "name": "value7_1",
                      "nativeSrc": "12742:8:7",
                      "nodeType": "YulTypedName",
                      "src": "12742:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "12824:18:7",
                  "nodeType": "YulAssignment",
                  "src": "12824:18:7",
                  "value": {
                    "name": "value6_1",
                    "nativeSrc": "12834:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "12834:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nativeSrc": "12824:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "12824:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "12851:18:7",
                  "nodeType": "YulAssignment",
                  "src": "12851:18:7",
                  "value": {
                    "name": "value7_1",
                    "nativeSrc": "12861:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "12861:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value7",
                      "nativeSrc": "12851:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "12851:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr",
            "nativeSrc": "11525:1350:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "11662:9:7",
                "nodeType": "YulTypedName",
                "src": "11662:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "11673:7:7",
                "nodeType": "YulTypedName",
                "src": "11673:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "11685:6:7",
                "nodeType": "YulTypedName",
                "src": "11685:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "11693:6:7",
                "nodeType": "YulTypedName",
                "src": "11693:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "11701:6:7",
                "nodeType": "YulTypedName",
                "src": "11701:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "11709:6:7",
                "nodeType": "YulTypedName",
                "src": "11709:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "11717:6:7",
                "nodeType": "YulTypedName",
                "src": "11717:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "11725:6:7",
                "nodeType": "YulTypedName",
                "src": "11725:6:7",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "11733:6:7",
                "nodeType": "YulTypedName",
                "src": "11733:6:7",
                "type": ""
              },
              {
                "name": "value7",
                "nativeSrc": "11741:6:7",
                "nodeType": "YulTypedName",
                "src": "11741:6:7",
                "type": ""
              }
            ],
            "src": "11525:1350:7"
          },
          {
            "body": {
              "nativeSrc": "12979:103:7",
              "nodeType": "YulBlock",
              "src": "12979:103:7",
              "statements": [
                {
                  "nativeSrc": "12989:26:7",
                  "nodeType": "YulAssignment",
                  "src": "12989:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13001:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "13001:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13012:2:7",
                        "nodeType": "YulLiteral",
                        "src": "13012:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "12997:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "12997:3:7"
                    },
                    "nativeSrc": "12997:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "12997:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "12989:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "12989:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13031:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "13031:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "13046:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "13046:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "13058:3:7",
                                "nodeType": "YulLiteral",
                                "src": "13058:3:7",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "13063:10:7",
                                "nodeType": "YulLiteral",
                                "src": "13063:10:7",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "13054:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "13054:3:7"
                            },
                            "nativeSrc": "13054:20:7",
                            "nodeType": "YulFunctionCall",
                            "src": "13054:20:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "13042:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "13042:3:7"
                        },
                        "nativeSrc": "13042:33:7",
                        "nodeType": "YulFunctionCall",
                        "src": "13042:33:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13024:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "13024:6:7"
                    },
                    "nativeSrc": "13024:52:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13024:52:7"
                  },
                  "nativeSrc": "13024:52:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "13024:52:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
            "nativeSrc": "12880:202:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "12948:9:7",
                "nodeType": "YulTypedName",
                "src": "12948:9:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "12959:6:7",
                "nodeType": "YulTypedName",
                "src": "12959:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "12970:4:7",
                "nodeType": "YulTypedName",
                "src": "12970:4:7",
                "type": ""
              }
            ],
            "src": "12880:202:7"
          },
          {
            "body": {
              "nativeSrc": "13174:301:7",
              "nodeType": "YulBlock",
              "src": "13174:301:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "13220:16:7",
                    "nodeType": "YulBlock",
                    "src": "13220:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "13229:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13229:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "13232:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13232:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "13222:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "13222:6:7"
                          },
                          "nativeSrc": "13222:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "13222:12:7"
                        },
                        "nativeSrc": "13222:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "13222:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "13195:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "13195:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "13204:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "13204:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "13191:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "13191:3:7"
                        },
                        "nativeSrc": "13191:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "13191:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13216:2:7",
                        "nodeType": "YulLiteral",
                        "src": "13216:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "13187:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "13187:3:7"
                    },
                    "nativeSrc": "13187:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13187:32:7"
                  },
                  "nativeSrc": "13184:52:7",
                  "nodeType": "YulIf",
                  "src": "13184:52:7"
                },
                {
                  "nativeSrc": "13245:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "13245:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13271:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "13271:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "13258:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "13258:12:7"
                    },
                    "nativeSrc": "13258:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13258:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "13249:5:7",
                      "nodeType": "YulTypedName",
                      "src": "13249:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "13315:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "13315:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "13290:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "13290:24:7"
                    },
                    "nativeSrc": "13290:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13290:31:7"
                  },
                  "nativeSrc": "13290:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "13290:31:7"
                },
                {
                  "nativeSrc": "13330:15:7",
                  "nodeType": "YulAssignment",
                  "src": "13330:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "13340:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "13340:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "13330:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "13330:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "13354:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "13354:47:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13386:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "13386:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13397:2:7",
                            "nodeType": "YulLiteral",
                            "src": "13397:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13382:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "13382:3:7"
                        },
                        "nativeSrc": "13382:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "13382:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "13369:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "13369:12:7"
                    },
                    "nativeSrc": "13369:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13369:32:7"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "13358:7:7",
                      "nodeType": "YulTypedName",
                      "src": "13358:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "13435:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "13435:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "13410:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "13410:24:7"
                    },
                    "nativeSrc": "13410:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13410:33:7"
                  },
                  "nativeSrc": "13410:33:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "13410:33:7"
                },
                {
                  "nativeSrc": "13452:17:7",
                  "nodeType": "YulAssignment",
                  "src": "13452:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "13462:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "13462:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "13452:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "13452:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nativeSrc": "13087:388:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "13132:9:7",
                "nodeType": "YulTypedName",
                "src": "13132:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "13143:7:7",
                "nodeType": "YulTypedName",
                "src": "13143:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "13155:6:7",
                "nodeType": "YulTypedName",
                "src": "13155:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "13163:6:7",
                "nodeType": "YulTypedName",
                "src": "13163:6:7",
                "type": ""
              }
            ],
            "src": "13087:388:7"
          },
          {
            "body": {
              "nativeSrc": "13621:465:7",
              "nodeType": "YulBlock",
              "src": "13621:465:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "13667:16:7",
                    "nodeType": "YulBlock",
                    "src": "13667:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "13676:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13676:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "13679:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13679:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "13669:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "13669:6:7"
                          },
                          "nativeSrc": "13669:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "13669:12:7"
                        },
                        "nativeSrc": "13669:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "13669:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "13642:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "13642:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "13651:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "13651:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "13638:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "13638:3:7"
                        },
                        "nativeSrc": "13638:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "13638:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13663:2:7",
                        "nodeType": "YulLiteral",
                        "src": "13663:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "13634:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "13634:3:7"
                    },
                    "nativeSrc": "13634:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13634:32:7"
                  },
                  "nativeSrc": "13631:52:7",
                  "nodeType": "YulIf",
                  "src": "13631:52:7"
                },
                {
                  "nativeSrc": "13692:37:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "13692:37:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "13719:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "13719:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "13706:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "13706:12:7"
                    },
                    "nativeSrc": "13706:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13706:23:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "13696:6:7",
                      "nodeType": "YulTypedName",
                      "src": "13696:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "13772:16:7",
                    "nodeType": "YulBlock",
                    "src": "13772:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "13781:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13781:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "13784:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13784:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "13774:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "13774:6:7"
                          },
                          "nativeSrc": "13774:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "13774:12:7"
                        },
                        "nativeSrc": "13774:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "13774:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "13744:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "13744:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13752:18:7",
                        "nodeType": "YulLiteral",
                        "src": "13752:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "13741:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "13741:2:7"
                    },
                    "nativeSrc": "13741:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13741:30:7"
                  },
                  "nativeSrc": "13738:50:7",
                  "nodeType": "YulIf",
                  "src": "13738:50:7"
                },
                {
                  "nativeSrc": "13797:77:7",
                  "nodeType": "YulAssignment",
                  "src": "13797:77:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13846:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "13846:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "13857:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "13857:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13842:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "13842:3:7"
                        },
                        "nativeSrc": "13842:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "13842:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "13866:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "13866:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_struct_OpsInfo_calldata",
                      "nativeSrc": "13807:34:7",
                      "nodeType": "YulIdentifier",
                      "src": "13807:34:7"
                    },
                    "nativeSrc": "13807:67:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13807:67:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "13797:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "13797:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "13883:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "13883:48:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13916:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "13916:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13927:2:7",
                            "nodeType": "YulLiteral",
                            "src": "13927:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13912:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "13912:3:7"
                        },
                        "nativeSrc": "13912:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "13912:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "13899:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "13899:12:7"
                    },
                    "nativeSrc": "13899:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13899:32:7"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "13887:8:7",
                      "nodeType": "YulTypedName",
                      "src": "13887:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "13976:16:7",
                    "nodeType": "YulBlock",
                    "src": "13976:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "13985:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13985:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "13988:1:7",
                              "nodeType": "YulLiteral",
                              "src": "13988:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "13978:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "13978:6:7"
                          },
                          "nativeSrc": "13978:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "13978:12:7"
                        },
                        "nativeSrc": "13978:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "13978:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "13946:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "13946:8:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13956:18:7",
                        "nodeType": "YulLiteral",
                        "src": "13956:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "13943:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "13943:2:7"
                    },
                    "nativeSrc": "13943:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "13943:32:7"
                  },
                  "nativeSrc": "13940:52:7",
                  "nodeType": "YulIf",
                  "src": "13940:52:7"
                },
                {
                  "nativeSrc": "14001:79:7",
                  "nodeType": "YulAssignment",
                  "src": "14001:79:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14050:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "14050:9:7"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "14061:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "14061:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14046:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "14046:3:7"
                        },
                        "nativeSrc": "14046:24:7",
                        "nodeType": "YulFunctionCall",
                        "src": "14046:24:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "14072:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "14072:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_struct_MVOinfo_calldata",
                      "nativeSrc": "14011:34:7",
                      "nodeType": "YulIdentifier",
                      "src": "14011:34:7"
                    },
                    "nativeSrc": "14011:69:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14011:69:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "14001:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "14001:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_struct$_OpsInfo_$3659_calldata_ptrt_struct$_MVOinfo_$3667_calldata_ptr",
            "nativeSrc": "13480:606:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "13579:9:7",
                "nodeType": "YulTypedName",
                "src": "13579:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "13590:7:7",
                "nodeType": "YulTypedName",
                "src": "13590:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "13602:6:7",
                "nodeType": "YulTypedName",
                "src": "13602:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "13610:6:7",
                "nodeType": "YulTypedName",
                "src": "13610:6:7",
                "type": ""
              }
            ],
            "src": "13480:606:7"
          },
          {
            "body": {
              "nativeSrc": "14248:771:7",
              "nodeType": "YulBlock",
              "src": "14248:771:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "14295:16:7",
                    "nodeType": "YulBlock",
                    "src": "14295:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "14304:1:7",
                              "nodeType": "YulLiteral",
                              "src": "14304:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "14307:1:7",
                              "nodeType": "YulLiteral",
                              "src": "14307:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "14297:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "14297:6:7"
                          },
                          "nativeSrc": "14297:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "14297:12:7"
                        },
                        "nativeSrc": "14297:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "14297:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "14269:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "14269:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "14278:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "14278:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "14265:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "14265:3:7"
                        },
                        "nativeSrc": "14265:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "14265:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14290:3:7",
                        "nodeType": "YulLiteral",
                        "src": "14290:3:7",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "14261:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "14261:3:7"
                    },
                    "nativeSrc": "14261:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14261:33:7"
                  },
                  "nativeSrc": "14258:53:7",
                  "nodeType": "YulIf",
                  "src": "14258:53:7"
                },
                {
                  "nativeSrc": "14320:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14320:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "14346:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "14346:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "14333:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "14333:12:7"
                    },
                    "nativeSrc": "14333:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14333:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "14324:5:7",
                      "nodeType": "YulTypedName",
                      "src": "14324:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "14390:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "14390:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "14365:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "14365:24:7"
                    },
                    "nativeSrc": "14365:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14365:31:7"
                  },
                  "nativeSrc": "14365:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "14365:31:7"
                },
                {
                  "nativeSrc": "14405:15:7",
                  "nodeType": "YulAssignment",
                  "src": "14405:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "14415:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "14415:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "14405:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "14405:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "14429:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14429:47:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14461:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "14461:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14472:2:7",
                            "nodeType": "YulLiteral",
                            "src": "14472:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14457:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "14457:3:7"
                        },
                        "nativeSrc": "14457:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "14457:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "14444:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "14444:12:7"
                    },
                    "nativeSrc": "14444:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14444:32:7"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "14433:7:7",
                      "nodeType": "YulTypedName",
                      "src": "14433:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "14510:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "14510:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "14485:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "14485:24:7"
                    },
                    "nativeSrc": "14485:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14485:33:7"
                  },
                  "nativeSrc": "14485:33:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "14485:33:7"
                },
                {
                  "nativeSrc": "14527:17:7",
                  "nodeType": "YulAssignment",
                  "src": "14527:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "14537:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "14537:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "14527:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "14527:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "14553:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14553:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "14568:1:7",
                    "nodeType": "YulLiteral",
                    "src": "14568:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "14557:7:7",
                      "nodeType": "YulTypedName",
                      "src": "14557:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "14578:43:7",
                  "nodeType": "YulAssignment",
                  "src": "14578:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14606:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "14606:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14617:2:7",
                            "nodeType": "YulLiteral",
                            "src": "14617:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14602:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "14602:3:7"
                        },
                        "nativeSrc": "14602:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "14602:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "14589:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "14589:12:7"
                    },
                    "nativeSrc": "14589:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14589:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "14578:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "14578:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "14630:17:7",
                  "nodeType": "YulAssignment",
                  "src": "14630:17:7",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "14640:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "14640:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "14630:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "14630:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "14656:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14656:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "14671:1:7",
                    "nodeType": "YulLiteral",
                    "src": "14671:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_3",
                      "nativeSrc": "14660:7:7",
                      "nodeType": "YulTypedName",
                      "src": "14660:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "14681:43:7",
                  "nodeType": "YulAssignment",
                  "src": "14681:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14709:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "14709:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14720:2:7",
                            "nodeType": "YulLiteral",
                            "src": "14720:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14705:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "14705:3:7"
                        },
                        "nativeSrc": "14705:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "14705:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "14692:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "14692:12:7"
                    },
                    "nativeSrc": "14692:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14692:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_3",
                      "nativeSrc": "14681:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "14681:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "14733:17:7",
                  "nodeType": "YulAssignment",
                  "src": "14733:17:7",
                  "value": {
                    "name": "value_3",
                    "nativeSrc": "14743:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "14743:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "14733:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "14733:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "14759:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14759:47:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14790:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "14790:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14801:3:7",
                            "nodeType": "YulLiteral",
                            "src": "14801:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14786:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "14786:3:7"
                        },
                        "nativeSrc": "14786:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "14786:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "14773:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "14773:12:7"
                    },
                    "nativeSrc": "14773:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14773:33:7"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "14763:6:7",
                      "nodeType": "YulTypedName",
                      "src": "14763:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "14849:16:7",
                    "nodeType": "YulBlock",
                    "src": "14849:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "14858:1:7",
                              "nodeType": "YulLiteral",
                              "src": "14858:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "14861:1:7",
                              "nodeType": "YulLiteral",
                              "src": "14861:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "14851:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "14851:6:7"
                          },
                          "nativeSrc": "14851:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "14851:12:7"
                        },
                        "nativeSrc": "14851:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "14851:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "14821:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "14821:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14829:18:7",
                        "nodeType": "YulLiteral",
                        "src": "14829:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "14818:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "14818:2:7"
                    },
                    "nativeSrc": "14818:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14818:30:7"
                  },
                  "nativeSrc": "14815:50:7",
                  "nodeType": "YulIf",
                  "src": "14815:50:7"
                },
                {
                  "nativeSrc": "14874:85:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "14874:85:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14931:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "14931:9:7"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "14942:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "14942:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14927:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "14927:3:7"
                        },
                        "nativeSrc": "14927:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "14927:22:7"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "14951:7:7",
                        "nodeType": "YulIdentifier",
                        "src": "14951:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "14900:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "14900:26:7"
                    },
                    "nativeSrc": "14900:59:7",
                    "nodeType": "YulFunctionCall",
                    "src": "14900:59:7"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nativeSrc": "14878:8:7",
                      "nodeType": "YulTypedName",
                      "src": "14878:8:7",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nativeSrc": "14888:8:7",
                      "nodeType": "YulTypedName",
                      "src": "14888:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "14968:18:7",
                  "nodeType": "YulAssignment",
                  "src": "14968:18:7",
                  "value": {
                    "name": "value4_1",
                    "nativeSrc": "14978:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "14978:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "14968:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "14968:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "14995:18:7",
                  "nodeType": "YulAssignment",
                  "src": "14995:18:7",
                  "value": {
                    "name": "value5_1",
                    "nativeSrc": "15005:8:7",
                    "nodeType": "YulIdentifier",
                    "src": "15005:8:7"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "14995:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "14995:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
            "nativeSrc": "14091:928:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "14174:9:7",
                "nodeType": "YulTypedName",
                "src": "14174:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "14185:7:7",
                "nodeType": "YulTypedName",
                "src": "14185:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "14197:6:7",
                "nodeType": "YulTypedName",
                "src": "14197:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "14205:6:7",
                "nodeType": "YulTypedName",
                "src": "14205:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "14213:6:7",
                "nodeType": "YulTypedName",
                "src": "14213:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "14221:6:7",
                "nodeType": "YulTypedName",
                "src": "14221:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "14229:6:7",
                "nodeType": "YulTypedName",
                "src": "14229:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "14237:6:7",
                "nodeType": "YulTypedName",
                "src": "14237:6:7",
                "type": ""
              }
            ],
            "src": "14091:928:7"
          },
          {
            "body": {
              "nativeSrc": "15128:383:7",
              "nodeType": "YulBlock",
              "src": "15128:383:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "15174:16:7",
                    "nodeType": "YulBlock",
                    "src": "15174:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15183:1:7",
                              "nodeType": "YulLiteral",
                              "src": "15183:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15186:1:7",
                              "nodeType": "YulLiteral",
                              "src": "15186:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "15176:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "15176:6:7"
                          },
                          "nativeSrc": "15176:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "15176:12:7"
                        },
                        "nativeSrc": "15176:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "15176:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "15149:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "15149:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "15158:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "15158:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "15145:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "15145:3:7"
                        },
                        "nativeSrc": "15145:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "15145:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15170:2:7",
                        "nodeType": "YulLiteral",
                        "src": "15170:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "15141:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "15141:3:7"
                    },
                    "nativeSrc": "15141:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15141:32:7"
                  },
                  "nativeSrc": "15138:52:7",
                  "nodeType": "YulIf",
                  "src": "15138:52:7"
                },
                {
                  "nativeSrc": "15199:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15199:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "15225:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "15225:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "15212:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "15212:12:7"
                    },
                    "nativeSrc": "15212:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15212:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "15203:5:7",
                      "nodeType": "YulTypedName",
                      "src": "15203:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "15269:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "15269:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "15244:24:7",
                      "nodeType": "YulIdentifier",
                      "src": "15244:24:7"
                    },
                    "nativeSrc": "15244:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15244:31:7"
                  },
                  "nativeSrc": "15244:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "15244:31:7"
                },
                {
                  "nativeSrc": "15284:15:7",
                  "nodeType": "YulAssignment",
                  "src": "15284:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "15294:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "15294:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "15284:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "15284:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "15308:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15308:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "15323:1:7",
                    "nodeType": "YulLiteral",
                    "src": "15323:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "15312:7:7",
                      "nodeType": "YulTypedName",
                      "src": "15312:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "15333:43:7",
                  "nodeType": "YulAssignment",
                  "src": "15333:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "15361:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "15361:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15372:2:7",
                            "nodeType": "YulLiteral",
                            "src": "15372:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15357:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "15357:3:7"
                        },
                        "nativeSrc": "15357:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "15357:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "15344:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "15344:12:7"
                    },
                    "nativeSrc": "15344:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15344:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "15333:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "15333:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "15385:17:7",
                  "nodeType": "YulAssignment",
                  "src": "15385:17:7",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "15395:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "15395:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "15385:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "15385:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "15411:16:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15411:16:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "15426:1:7",
                    "nodeType": "YulLiteral",
                    "src": "15426:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "15415:7:7",
                      "nodeType": "YulTypedName",
                      "src": "15415:7:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "15436:43:7",
                  "nodeType": "YulAssignment",
                  "src": "15436:43:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "15464:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "15464:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15475:2:7",
                            "nodeType": "YulLiteral",
                            "src": "15475:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15460:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "15460:3:7"
                        },
                        "nativeSrc": "15460:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "15460:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "15447:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "15447:12:7"
                    },
                    "nativeSrc": "15447:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15447:32:7"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "15436:7:7",
                      "nodeType": "YulIdentifier",
                      "src": "15436:7:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "15488:17:7",
                  "nodeType": "YulAssignment",
                  "src": "15488:17:7",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "15498:7:7",
                    "nodeType": "YulIdentifier",
                    "src": "15498:7:7"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "15488:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "15488:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256t_uint256",
            "nativeSrc": "15024:487:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "15078:9:7",
                "nodeType": "YulTypedName",
                "src": "15078:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "15089:7:7",
                "nodeType": "YulTypedName",
                "src": "15089:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "15101:6:7",
                "nodeType": "YulTypedName",
                "src": "15101:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "15109:6:7",
                "nodeType": "YulTypedName",
                "src": "15109:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "15117:6:7",
                "nodeType": "YulTypedName",
                "src": "15117:6:7",
                "type": ""
              }
            ],
            "src": "15024:487:7"
          },
          {
            "body": {
              "nativeSrc": "15571:325:7",
              "nodeType": "YulBlock",
              "src": "15571:325:7",
              "statements": [
                {
                  "nativeSrc": "15581:22:7",
                  "nodeType": "YulAssignment",
                  "src": "15581:22:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "15595:1:7",
                        "nodeType": "YulLiteral",
                        "src": "15595:1:7",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nativeSrc": "15598:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "15598:4:7"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nativeSrc": "15591:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "15591:3:7"
                    },
                    "nativeSrc": "15591:12:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15591:12:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "15581:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "15581:6:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "15612:38:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15612:38:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nativeSrc": "15642:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "15642:4:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15648:1:7",
                        "nodeType": "YulLiteral",
                        "src": "15648:1:7",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "15638:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "15638:3:7"
                    },
                    "nativeSrc": "15638:12:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15638:12:7"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nativeSrc": "15616:18:7",
                      "nodeType": "YulTypedName",
                      "src": "15616:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "15689:31:7",
                    "nodeType": "YulBlock",
                    "src": "15689:31:7",
                    "statements": [
                      {
                        "nativeSrc": "15691:27:7",
                        "nodeType": "YulAssignment",
                        "src": "15691:27:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nativeSrc": "15705:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "15705:6:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15713:4:7",
                              "nodeType": "YulLiteral",
                              "src": "15713:4:7",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "15701:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "15701:3:7"
                          },
                          "nativeSrc": "15701:17:7",
                          "nodeType": "YulFunctionCall",
                          "src": "15701:17:7"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nativeSrc": "15691:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "15691:6:7"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "15669:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "15669:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "15662:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "15662:6:7"
                    },
                    "nativeSrc": "15662:26:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15662:26:7"
                  },
                  "nativeSrc": "15659:61:7",
                  "nodeType": "YulIf",
                  "src": "15659:61:7"
                },
                {
                  "body": {
                    "nativeSrc": "15779:111:7",
                    "nodeType": "YulBlock",
                    "src": "15779:111:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15800:1:7",
                              "nodeType": "YulLiteral",
                              "src": "15800:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "15807:3:7",
                                  "nodeType": "YulLiteral",
                                  "src": "15807:3:7",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "15812:10:7",
                                  "nodeType": "YulLiteral",
                                  "src": "15812:10:7",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "15803:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "15803:3:7"
                              },
                              "nativeSrc": "15803:20:7",
                              "nodeType": "YulFunctionCall",
                              "src": "15803:20:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "15793:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "15793:6:7"
                          },
                          "nativeSrc": "15793:31:7",
                          "nodeType": "YulFunctionCall",
                          "src": "15793:31:7"
                        },
                        "nativeSrc": "15793:31:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "15793:31:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15844:1:7",
                              "nodeType": "YulLiteral",
                              "src": "15844:1:7",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15847:4:7",
                              "nodeType": "YulLiteral",
                              "src": "15847:4:7",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "15837:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "15837:6:7"
                          },
                          "nativeSrc": "15837:15:7",
                          "nodeType": "YulFunctionCall",
                          "src": "15837:15:7"
                        },
                        "nativeSrc": "15837:15:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "15837:15:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15872:1:7",
                              "nodeType": "YulLiteral",
                              "src": "15872:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15875:4:7",
                              "nodeType": "YulLiteral",
                              "src": "15875:4:7",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "15865:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "15865:6:7"
                          },
                          "nativeSrc": "15865:15:7",
                          "nodeType": "YulFunctionCall",
                          "src": "15865:15:7"
                        },
                        "nativeSrc": "15865:15:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "15865:15:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "15735:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "15735:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nativeSrc": "15758:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "15758:6:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15766:2:7",
                            "nodeType": "YulLiteral",
                            "src": "15766:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "15755:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "15755:2:7"
                        },
                        "nativeSrc": "15755:14:7",
                        "nodeType": "YulFunctionCall",
                        "src": "15755:14:7"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "15732:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "15732:2:7"
                    },
                    "nativeSrc": "15732:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15732:38:7"
                  },
                  "nativeSrc": "15729:161:7",
                  "nodeType": "YulIf",
                  "src": "15729:161:7"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nativeSrc": "15516:380:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "15551:4:7",
                "nodeType": "YulTypedName",
                "src": "15551:4:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nativeSrc": "15560:6:7",
                "nodeType": "YulTypedName",
                "src": "15560:6:7",
                "type": ""
              }
            ],
            "src": "15516:380:7"
          },
          {
            "body": {
              "nativeSrc": "15957:65:7",
              "nodeType": "YulBlock",
              "src": "15957:65:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "15974:1:7",
                        "nodeType": "YulLiteral",
                        "src": "15974:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nativeSrc": "15977:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "15977:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "15967:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "15967:6:7"
                    },
                    "nativeSrc": "15967:14:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15967:14:7"
                  },
                  "nativeSrc": "15967:14:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "15967:14:7"
                },
                {
                  "nativeSrc": "15990:26:7",
                  "nodeType": "YulAssignment",
                  "src": "15990:26:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "16008:1:7",
                        "nodeType": "YulLiteral",
                        "src": "16008:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16011:4:7",
                        "nodeType": "YulLiteral",
                        "src": "16011:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nativeSrc": "15998:9:7",
                      "nodeType": "YulIdentifier",
                      "src": "15998:9:7"
                    },
                    "nativeSrc": "15998:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "15998:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nativeSrc": "15990:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "15990:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nativeSrc": "15901:121:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "15940:3:7",
                "nodeType": "YulTypedName",
                "src": "15940:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nativeSrc": "15948:4:7",
                "nodeType": "YulTypedName",
                "src": "15948:4:7",
                "type": ""
              }
            ],
            "src": "15901:121:7"
          },
          {
            "body": {
              "nativeSrc": "16085:619:7",
              "nodeType": "YulBlock",
              "src": "16085:619:7",
              "statements": [
                {
                  "nativeSrc": "16095:29:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16095:29:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "16118:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "16118:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nativeSrc": "16112:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "16112:5:7"
                    },
                    "nativeSrc": "16112:12:7",
                    "nodeType": "YulFunctionCall",
                    "src": "16112:12:7"
                  },
                  "variables": [
                    {
                      "name": "slotValue",
                      "nativeSrc": "16099:9:7",
                      "nodeType": "YulTypedName",
                      "src": "16099:9:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "16133:50:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16133:50:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nativeSrc": "16173:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "16173:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nativeSrc": "16147:25:7",
                      "nodeType": "YulIdentifier",
                      "src": "16147:25:7"
                    },
                    "nativeSrc": "16147:36:7",
                    "nodeType": "YulFunctionCall",
                    "src": "16147:36:7"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "16137:6:7",
                      "nodeType": "YulTypedName",
                      "src": "16137:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "16232:126:7",
                        "nodeType": "YulBlock",
                        "src": "16232:126:7",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nativeSrc": "16253:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "16253:3:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "slotValue",
                                      "nativeSrc": "16262:9:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "16262:9:7"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "16277:3:7",
                                          "nodeType": "YulLiteral",
                                          "src": "16277:3:7",
                                          "type": "",
                                          "value": "255"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nativeSrc": "16273:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "16273:3:7"
                                      },
                                      "nativeSrc": "16273:8:7",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16273:8:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nativeSrc": "16258:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "16258:3:7"
                                  },
                                  "nativeSrc": "16258:24:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "16258:24:7"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "16246:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "16246:6:7"
                              },
                              "nativeSrc": "16246:37:7",
                              "nodeType": "YulFunctionCall",
                              "src": "16246:37:7"
                            },
                            "nativeSrc": "16246:37:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "16246:37:7"
                          },
                          {
                            "nativeSrc": "16296:52:7",
                            "nodeType": "YulAssignment",
                            "src": "16296:52:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nativeSrc": "16307:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "16307:3:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "length",
                                      "nativeSrc": "16316:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "16316:6:7"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "length",
                                              "nativeSrc": "16338:6:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "16338:6:7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nativeSrc": "16331:6:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "16331:6:7"
                                          },
                                          "nativeSrc": "16331:14:7",
                                          "nodeType": "YulFunctionCall",
                                          "src": "16331:14:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nativeSrc": "16324:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "16324:6:7"
                                      },
                                      "nativeSrc": "16324:22:7",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16324:22:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mul",
                                    "nativeSrc": "16312:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "16312:3:7"
                                  },
                                  "nativeSrc": "16312:35:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "16312:35:7"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "16303:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "16303:3:7"
                              },
                              "nativeSrc": "16303:45:7",
                              "nodeType": "YulFunctionCall",
                              "src": "16303:45:7"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nativeSrc": "16296:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "16296:3:7"
                              }
                            ]
                          }
                        ]
                      },
                      "nativeSrc": "16225:133:7",
                      "nodeType": "YulCase",
                      "src": "16225:133:7",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "16230:1:7",
                        "nodeType": "YulLiteral",
                        "src": "16230:1:7",
                        "type": "",
                        "value": "0"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "16374:324:7",
                        "nodeType": "YulBlock",
                        "src": "16374:324:7",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "16395:1:7",
                                  "nodeType": "YulLiteral",
                                  "src": "16395:1:7",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "value",
                                  "nativeSrc": "16398:5:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "16398:5:7"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "16388:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "16388:6:7"
                              },
                              "nativeSrc": "16388:16:7",
                              "nodeType": "YulFunctionCall",
                              "src": "16388:16:7"
                            },
                            "nativeSrc": "16388:16:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "16388:16:7"
                          },
                          {
                            "nativeSrc": "16417:33:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "16417:33:7",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "16442:1:7",
                                  "nodeType": "YulLiteral",
                                  "src": "16442:1:7",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "16445:4:7",
                                  "nodeType": "YulLiteral",
                                  "src": "16445:4:7",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nativeSrc": "16432:9:7",
                                "nodeType": "YulIdentifier",
                                "src": "16432:9:7"
                              },
                              "nativeSrc": "16432:18:7",
                              "nodeType": "YulFunctionCall",
                              "src": "16432:18:7"
                            },
                            "variables": [
                              {
                                "name": "dataPos",
                                "nativeSrc": "16421:7:7",
                                "nodeType": "YulTypedName",
                                "src": "16421:7:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "16463:10:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "16463:10:7",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "16472:1:7",
                              "nodeType": "YulLiteral",
                              "src": "16472:1:7",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "16467:1:7",
                                "nodeType": "YulTypedName",
                                "src": "16467:1:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "16542:110:7",
                              "nodeType": "YulBlock",
                              "src": "16542:110:7",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nativeSrc": "16571:3:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "16571:3:7"
                                          },
                                          {
                                            "name": "i",
                                            "nativeSrc": "16576:1:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "16576:1:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "16567:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "16567:3:7"
                                        },
                                        "nativeSrc": "16567:11:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "16567:11:7"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "dataPos",
                                            "nativeSrc": "16586:7:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "16586:7:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nativeSrc": "16580:5:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "16580:5:7"
                                        },
                                        "nativeSrc": "16580:14:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "16580:14:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nativeSrc": "16560:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "16560:6:7"
                                    },
                                    "nativeSrc": "16560:35:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "16560:35:7"
                                  },
                                  "nativeSrc": "16560:35:7",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "16560:35:7"
                                },
                                {
                                  "nativeSrc": "16612:26:7",
                                  "nodeType": "YulAssignment",
                                  "src": "16612:26:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dataPos",
                                        "nativeSrc": "16627:7:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "16627:7:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "16636:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "16636:1:7",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "16623:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "16623:3:7"
                                    },
                                    "nativeSrc": "16623:15:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "16623:15:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dataPos",
                                      "nativeSrc": "16612:7:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "16612:7:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "16497:1:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "16497:1:7"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "16500:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "16500:6:7"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "16494:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "16494:2:7"
                              },
                              "nativeSrc": "16494:13:7",
                              "nodeType": "YulFunctionCall",
                              "src": "16494:13:7"
                            },
                            "nativeSrc": "16486:166:7",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "16508:21:7",
                              "nodeType": "YulBlock",
                              "src": "16508:21:7",
                              "statements": [
                                {
                                  "nativeSrc": "16510:17:7",
                                  "nodeType": "YulAssignment",
                                  "src": "16510:17:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "16519:1:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "16519:1:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "16522:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "16522:4:7",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "16515:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "16515:3:7"
                                    },
                                    "nativeSrc": "16515:12:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "16515:12:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "16510:1:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "16510:1:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "16490:3:7",
                              "nodeType": "YulBlock",
                              "src": "16490:3:7",
                              "statements": []
                            },
                            "src": "16486:166:7"
                          },
                          {
                            "nativeSrc": "16665:23:7",
                            "nodeType": "YulAssignment",
                            "src": "16665:23:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nativeSrc": "16676:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "16676:3:7"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "16681:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "16681:6:7"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "16672:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "16672:3:7"
                              },
                              "nativeSrc": "16672:16:7",
                              "nodeType": "YulFunctionCall",
                              "src": "16672:16:7"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nativeSrc": "16665:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "16665:3:7"
                              }
                            ]
                          }
                        ]
                      },
                      "nativeSrc": "16367:331:7",
                      "nodeType": "YulCase",
                      "src": "16367:331:7",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "16372:1:7",
                        "nodeType": "YulLiteral",
                        "src": "16372:1:7",
                        "type": "",
                        "value": "1"
                      }
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nativeSrc": "16203:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "16203:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16214:1:7",
                        "nodeType": "YulLiteral",
                        "src": "16214:1:7",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "16199:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "16199:3:7"
                    },
                    "nativeSrc": "16199:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "16199:17:7"
                  },
                  "nativeSrc": "16192:506:7",
                  "nodeType": "YulSwitch",
                  "src": "16192:506:7"
                }
              ]
            },
            "name": "abi_encode_string_storage",
            "nativeSrc": "16027:677:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "16062:5:7",
                "nodeType": "YulTypedName",
                "src": "16062:5:7",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "16069:3:7",
                "nodeType": "YulTypedName",
                "src": "16069:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nativeSrc": "16077:3:7",
                "nodeType": "YulTypedName",
                "src": "16077:3:7",
                "type": ""
              }
            ],
            "src": "16027:677:7"
          },
          {
            "body": {
              "nativeSrc": "16903:179:7",
              "nodeType": "YulBlock",
              "src": "16903:179:7",
              "statements": [
                {
                  "nativeSrc": "16913:48:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16913:48:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "16949:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "16949:6:7"
                      },
                      {
                        "name": "pos",
                        "nativeSrc": "16957:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "16957:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_storage",
                      "nativeSrc": "16923:25:7",
                      "nodeType": "YulIdentifier",
                      "src": "16923:25:7"
                    },
                    "nativeSrc": "16923:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "16923:38:7"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "16917:2:7",
                      "nodeType": "YulTypedName",
                      "src": "16917:2:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "16983:2:7",
                        "nodeType": "YulIdentifier",
                        "src": "16983:2:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "16987:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "16987:6:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "16995:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "16995:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "16970:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "16970:12:7"
                    },
                    "nativeSrc": "16970:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "16970:32:7"
                  },
                  "nativeSrc": "16970:32:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "16970:32:7"
                },
                {
                  "nativeSrc": "17011:25:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "17011:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "17025:2:7",
                        "nodeType": "YulIdentifier",
                        "src": "17025:2:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "17029:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17029:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "17021:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "17021:3:7"
                    },
                    "nativeSrc": "17021:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17021:15:7"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nativeSrc": "17015:2:7",
                      "nodeType": "YulTypedName",
                      "src": "17015:2:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nativeSrc": "17052:2:7",
                        "nodeType": "YulIdentifier",
                        "src": "17052:2:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17056:1:7",
                        "nodeType": "YulLiteral",
                        "src": "17056:1:7",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17045:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "17045:6:7"
                    },
                    "nativeSrc": "17045:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17045:13:7"
                  },
                  "nativeSrc": "17045:13:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17045:13:7"
                },
                {
                  "nativeSrc": "17067:9:7",
                  "nodeType": "YulAssignment",
                  "src": "17067:9:7",
                  "value": {
                    "name": "_2",
                    "nativeSrc": "17074:2:7",
                    "nodeType": "YulIdentifier",
                    "src": "17074:2:7"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "17067:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "17067:3:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_storage_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "16709:373:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "16863:3:7",
                "nodeType": "YulTypedName",
                "src": "16863:3:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "16868:6:7",
                "nodeType": "YulTypedName",
                "src": "16868:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "16876:6:7",
                "nodeType": "YulTypedName",
                "src": "16876:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "16884:6:7",
                "nodeType": "YulTypedName",
                "src": "16884:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "16895:3:7",
                "nodeType": "YulTypedName",
                "src": "16895:3:7",
                "type": ""
              }
            ],
            "src": "16709:373:7"
          },
          {
            "body": {
              "nativeSrc": "17236:124:7",
              "nodeType": "YulBlock",
              "src": "17236:124:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "17259:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "17259:3:7"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "17264:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17264:6:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "17272:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17272:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "17246:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "17246:12:7"
                    },
                    "nativeSrc": "17246:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17246:33:7"
                  },
                  "nativeSrc": "17246:33:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17246:33:7"
                },
                {
                  "nativeSrc": "17288:26:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "17288:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "17302:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "17302:3:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "17307:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17307:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "17298:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "17298:3:7"
                    },
                    "nativeSrc": "17298:16:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17298:16:7"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "17292:2:7",
                      "nodeType": "YulTypedName",
                      "src": "17292:2:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "17330:2:7",
                        "nodeType": "YulIdentifier",
                        "src": "17330:2:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17334:1:7",
                        "nodeType": "YulLiteral",
                        "src": "17334:1:7",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17323:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "17323:6:7"
                    },
                    "nativeSrc": "17323:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17323:13:7"
                  },
                  "nativeSrc": "17323:13:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17323:13:7"
                },
                {
                  "nativeSrc": "17345:9:7",
                  "nodeType": "YulAssignment",
                  "src": "17345:9:7",
                  "value": {
                    "name": "_1",
                    "nativeSrc": "17352:2:7",
                    "nodeType": "YulIdentifier",
                    "src": "17352:2:7"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "17345:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "17345:3:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "17087:273:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "17204:3:7",
                "nodeType": "YulTypedName",
                "src": "17204:3:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "17209:6:7",
                "nodeType": "YulTypedName",
                "src": "17209:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "17217:6:7",
                "nodeType": "YulTypedName",
                "src": "17217:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "17228:3:7",
                "nodeType": "YulTypedName",
                "src": "17228:3:7",
                "type": ""
              }
            ],
            "src": "17087:273:7"
          },
          {
            "body": {
              "nativeSrc": "17432:200:7",
              "nodeType": "YulBlock",
              "src": "17432:200:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "17449:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "17449:3:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "17454:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17454:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17442:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "17442:6:7"
                    },
                    "nativeSrc": "17442:19:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17442:19:7"
                  },
                  "nativeSrc": "17442:19:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17442:19:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "17487:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "17487:3:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17492:4:7",
                            "nodeType": "YulLiteral",
                            "src": "17492:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17483:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "17483:3:7"
                        },
                        "nativeSrc": "17483:14:7",
                        "nodeType": "YulFunctionCall",
                        "src": "17483:14:7"
                      },
                      {
                        "name": "start",
                        "nativeSrc": "17499:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "17499:5:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "17506:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17506:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "17470:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "17470:12:7"
                    },
                    "nativeSrc": "17470:43:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17470:43:7"
                  },
                  "nativeSrc": "17470:43:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17470:43:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nativeSrc": "17537:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "17537:3:7"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "17542:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "17542:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "17533:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "17533:3:7"
                            },
                            "nativeSrc": "17533:16:7",
                            "nodeType": "YulFunctionCall",
                            "src": "17533:16:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17551:4:7",
                            "nodeType": "YulLiteral",
                            "src": "17551:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17529:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "17529:3:7"
                        },
                        "nativeSrc": "17529:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "17529:27:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17558:1:7",
                        "nodeType": "YulLiteral",
                        "src": "17558:1:7",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17522:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "17522:6:7"
                    },
                    "nativeSrc": "17522:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17522:38:7"
                  },
                  "nativeSrc": "17522:38:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17522:38:7"
                },
                {
                  "nativeSrc": "17569:57:7",
                  "nodeType": "YulAssignment",
                  "src": "17569:57:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "17584:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "17584:3:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "17597:6:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "17597:6:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17605:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "17605:2:7",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "17593:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "17593:3:7"
                                },
                                "nativeSrc": "17593:15:7",
                                "nodeType": "YulFunctionCall",
                                "src": "17593:15:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17614:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "17614:2:7",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "17610:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "17610:3:7"
                                },
                                "nativeSrc": "17610:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "17610:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "17589:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "17589:3:7"
                            },
                            "nativeSrc": "17589:29:7",
                            "nodeType": "YulFunctionCall",
                            "src": "17589:29:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17580:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "17580:3:7"
                        },
                        "nativeSrc": "17580:39:7",
                        "nodeType": "YulFunctionCall",
                        "src": "17580:39:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17621:4:7",
                        "nodeType": "YulLiteral",
                        "src": "17621:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "17576:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "17576:3:7"
                    },
                    "nativeSrc": "17576:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17576:50:7"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "17569:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "17569:3:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string_calldata",
            "nativeSrc": "17365:267:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "start",
                "nativeSrc": "17401:5:7",
                "nodeType": "YulTypedName",
                "src": "17401:5:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "17408:6:7",
                "nodeType": "YulTypedName",
                "src": "17408:6:7",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "17416:3:7",
                "nodeType": "YulTypedName",
                "src": "17416:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "17424:3:7",
                "nodeType": "YulTypedName",
                "src": "17424:3:7",
                "type": ""
              }
            ],
            "src": "17365:267:7"
          },
          {
            "body": {
              "nativeSrc": "17796:185:7",
              "nodeType": "YulBlock",
              "src": "17796:185:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "17813:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "17813:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "17828:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "17828:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17844:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "17844:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17849:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "17849:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "17840:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "17840:3:7"
                                },
                                "nativeSrc": "17840:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "17840:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "17853:1:7",
                                "nodeType": "YulLiteral",
                                "src": "17853:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "17836:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "17836:3:7"
                            },
                            "nativeSrc": "17836:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "17836:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "17824:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "17824:3:7"
                        },
                        "nativeSrc": "17824:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "17824:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17806:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "17806:6:7"
                    },
                    "nativeSrc": "17806:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17806:51:7"
                  },
                  "nativeSrc": "17806:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17806:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "17877:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "17877:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17888:2:7",
                            "nodeType": "YulLiteral",
                            "src": "17888:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17873:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "17873:3:7"
                        },
                        "nativeSrc": "17873:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "17873:18:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17893:2:7",
                        "nodeType": "YulLiteral",
                        "src": "17893:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17866:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "17866:6:7"
                    },
                    "nativeSrc": "17866:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17866:30:7"
                  },
                  "nativeSrc": "17866:30:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "17866:30:7"
                },
                {
                  "nativeSrc": "17905:70:7",
                  "nodeType": "YulAssignment",
                  "src": "17905:70:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "17940:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17940:6:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "17948:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "17948:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "17960:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "17960:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17971:2:7",
                            "nodeType": "YulLiteral",
                            "src": "17971:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "17956:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "17956:3:7"
                        },
                        "nativeSrc": "17956:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "17956:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "17913:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "17913:26:7"
                    },
                    "nativeSrc": "17913:62:7",
                    "nodeType": "YulFunctionCall",
                    "src": "17913:62:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "17905:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "17905:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_string_calldata_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "17637:344:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "17749:9:7",
                "nodeType": "YulTypedName",
                "src": "17749:9:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "17760:6:7",
                "nodeType": "YulTypedName",
                "src": "17760:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "17768:6:7",
                "nodeType": "YulTypedName",
                "src": "17768:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "17776:6:7",
                "nodeType": "YulTypedName",
                "src": "17776:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "17787:4:7",
                "nodeType": "YulTypedName",
                "src": "17787:4:7",
                "type": ""
              }
            ],
            "src": "17637:344:7"
          },
          {
            "body": {
              "nativeSrc": "18018:95:7",
              "nodeType": "YulBlock",
              "src": "18018:95:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "18035:1:7",
                        "nodeType": "YulLiteral",
                        "src": "18035:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "18042:3:7",
                            "nodeType": "YulLiteral",
                            "src": "18042:3:7",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "18047:10:7",
                            "nodeType": "YulLiteral",
                            "src": "18047:10:7",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "18038:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "18038:3:7"
                        },
                        "nativeSrc": "18038:20:7",
                        "nodeType": "YulFunctionCall",
                        "src": "18038:20:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18028:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "18028:6:7"
                    },
                    "nativeSrc": "18028:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18028:31:7"
                  },
                  "nativeSrc": "18028:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "18028:31:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "18075:1:7",
                        "nodeType": "YulLiteral",
                        "src": "18075:1:7",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18078:4:7",
                        "nodeType": "YulLiteral",
                        "src": "18078:4:7",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "18068:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "18068:6:7"
                    },
                    "nativeSrc": "18068:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18068:15:7"
                  },
                  "nativeSrc": "18068:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "18068:15:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "18099:1:7",
                        "nodeType": "YulLiteral",
                        "src": "18099:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18102:4:7",
                        "nodeType": "YulLiteral",
                        "src": "18102:4:7",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "18092:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "18092:6:7"
                    },
                    "nativeSrc": "18092:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18092:15:7"
                  },
                  "nativeSrc": "18092:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "18092:15:7"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nativeSrc": "17986:127:7",
            "nodeType": "YulFunctionDefinition",
            "src": "17986:127:7"
          },
          {
            "body": {
              "nativeSrc": "18213:427:7",
              "nodeType": "YulBlock",
              "src": "18213:427:7",
              "statements": [
                {
                  "nativeSrc": "18223:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "18223:51:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "18262:11:7",
                        "nodeType": "YulIdentifier",
                        "src": "18262:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "18249:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "18249:12:7"
                    },
                    "nativeSrc": "18249:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18249:25:7"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "18227:18:7",
                      "nodeType": "YulTypedName",
                      "src": "18227:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "18363:16:7",
                    "nodeType": "YulBlock",
                    "src": "18363:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "18372:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18372:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18375:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18375:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "18365:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "18365:6:7"
                          },
                          "nativeSrc": "18365:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18365:12:7"
                        },
                        "nativeSrc": "18365:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "18365:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "18297:18:7",
                            "nodeType": "YulIdentifier",
                            "src": "18297:18:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "18325:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "18325:12:7"
                                    },
                                    "nativeSrc": "18325:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18325:14:7"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "18341:8:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "18341:8:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "18321:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "18321:3:7"
                                },
                                "nativeSrc": "18321:29:7",
                                "nodeType": "YulFunctionCall",
                                "src": "18321:29:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18356:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "18356:2:7",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "18352:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "18352:3:7"
                                },
                                "nativeSrc": "18352:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "18352:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "18317:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "18317:3:7"
                            },
                            "nativeSrc": "18317:43:7",
                            "nodeType": "YulFunctionCall",
                            "src": "18317:43:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "18293:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "18293:3:7"
                        },
                        "nativeSrc": "18293:68:7",
                        "nodeType": "YulFunctionCall",
                        "src": "18293:68:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "18286:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "18286:6:7"
                    },
                    "nativeSrc": "18286:76:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18286:76:7"
                  },
                  "nativeSrc": "18283:96:7",
                  "nodeType": "YulIf",
                  "src": "18283:96:7"
                },
                {
                  "nativeSrc": "18388:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "18388:47:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "18406:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "18406:8:7"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "18416:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "18416:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "18402:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "18402:3:7"
                    },
                    "nativeSrc": "18402:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18402:33:7"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "18392:6:7",
                      "nodeType": "YulTypedName",
                      "src": "18392:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "18444:30:7",
                  "nodeType": "YulAssignment",
                  "src": "18444:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "18467:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "18467:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "18454:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "18454:12:7"
                    },
                    "nativeSrc": "18454:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18454:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "18444:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "18444:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "18517:16:7",
                    "nodeType": "YulBlock",
                    "src": "18517:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "18526:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18526:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18529:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18529:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "18519:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "18519:6:7"
                          },
                          "nativeSrc": "18519:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18519:12:7"
                        },
                        "nativeSrc": "18519:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "18519:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "18489:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "18489:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18497:18:7",
                        "nodeType": "YulLiteral",
                        "src": "18497:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "18486:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "18486:2:7"
                    },
                    "nativeSrc": "18486:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18486:30:7"
                  },
                  "nativeSrc": "18483:50:7",
                  "nodeType": "YulIf",
                  "src": "18483:50:7"
                },
                {
                  "nativeSrc": "18542:25:7",
                  "nodeType": "YulAssignment",
                  "src": "18542:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "18554:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "18554:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18562:4:7",
                        "nodeType": "YulLiteral",
                        "src": "18562:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "18550:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "18550:3:7"
                    },
                    "nativeSrc": "18550:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18550:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "18542:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "18542:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "18618:16:7",
                    "nodeType": "YulBlock",
                    "src": "18618:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "18627:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18627:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18630:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18630:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "18620:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "18620:6:7"
                          },
                          "nativeSrc": "18620:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18620:12:7"
                        },
                        "nativeSrc": "18620:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "18620:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "18583:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "18583:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "18593:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "18593:12:7"
                            },
                            "nativeSrc": "18593:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "18593:14:7"
                          },
                          {
                            "name": "length",
                            "nativeSrc": "18609:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "18609:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "18589:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "18589:3:7"
                        },
                        "nativeSrc": "18589:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "18589:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "18579:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "18579:3:7"
                    },
                    "nativeSrc": "18579:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18579:38:7"
                  },
                  "nativeSrc": "18576:58:7",
                  "nodeType": "YulIf",
                  "src": "18576:58:7"
                }
              ]
            },
            "name": "access_calldata_tail_t_string_calldata_ptr",
            "nativeSrc": "18118:522:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "18170:8:7",
                "nodeType": "YulTypedName",
                "src": "18170:8:7",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "18180:11:7",
                "nodeType": "YulTypedName",
                "src": "18180:11:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "18196:4:7",
                "nodeType": "YulTypedName",
                "src": "18196:4:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "18202:6:7",
                "nodeType": "YulTypedName",
                "src": "18202:6:7",
                "type": ""
              }
            ],
            "src": "18118:522:7"
          },
          {
            "body": {
              "nativeSrc": "18726:437:7",
              "nodeType": "YulBlock",
              "src": "18726:437:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "18759:398:7",
                    "nodeType": "YulBlock",
                    "src": "18759:398:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "18780:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18780:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "name": "array",
                              "nativeSrc": "18783:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "18783:5:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "18773:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "18773:6:7"
                          },
                          "nativeSrc": "18773:16:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18773:16:7"
                        },
                        "nativeSrc": "18773:16:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "18773:16:7"
                      },
                      {
                        "nativeSrc": "18802:30:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "18802:30:7",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "18824:1:7",
                              "nodeType": "YulLiteral",
                              "src": "18824:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18827:4:7",
                              "nodeType": "YulLiteral",
                              "src": "18827:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nativeSrc": "18814:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "18814:9:7"
                          },
                          "nativeSrc": "18814:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18814:18:7"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nativeSrc": "18806:4:7",
                            "nodeType": "YulTypedName",
                            "src": "18806:4:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "18845:57:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "18845:57:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "18868:4:7",
                              "nodeType": "YulIdentifier",
                              "src": "18868:4:7"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "18878:1:7",
                                  "nodeType": "YulLiteral",
                                  "src": "18878:1:7",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nativeSrc": "18885:10:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "18885:10:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "18897:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "18897:2:7",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "18881:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "18881:3:7"
                                  },
                                  "nativeSrc": "18881:19:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "18881:19:7"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "18874:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "18874:3:7"
                              },
                              "nativeSrc": "18874:27:7",
                              "nodeType": "YulFunctionCall",
                              "src": "18874:27:7"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "18864:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "18864:3:7"
                          },
                          "nativeSrc": "18864:38:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18864:38:7"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nativeSrc": "18849:11:7",
                            "nodeType": "YulTypedName",
                            "src": "18849:11:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "18939:23:7",
                          "nodeType": "YulBlock",
                          "src": "18939:23:7",
                          "statements": [
                            {
                              "nativeSrc": "18941:19:7",
                              "nodeType": "YulAssignment",
                              "src": "18941:19:7",
                              "value": {
                                "name": "data",
                                "nativeSrc": "18956:4:7",
                                "nodeType": "YulIdentifier",
                                "src": "18956:4:7"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nativeSrc": "18941:11:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "18941:11:7"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nativeSrc": "18921:10:7",
                              "nodeType": "YulIdentifier",
                              "src": "18921:10:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18933:4:7",
                              "nodeType": "YulLiteral",
                              "src": "18933:4:7",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "18918:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "18918:2:7"
                          },
                          "nativeSrc": "18918:20:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18918:20:7"
                        },
                        "nativeSrc": "18915:47:7",
                        "nodeType": "YulIf",
                        "src": "18915:47:7"
                      },
                      {
                        "nativeSrc": "18975:41:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "18975:41:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "18989:4:7",
                              "nodeType": "YulIdentifier",
                              "src": "18989:4:7"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "18999:1:7",
                                  "nodeType": "YulLiteral",
                                  "src": "18999:1:7",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nativeSrc": "19006:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19006:3:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "19011:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "19011:2:7",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "19002:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "19002:3:7"
                                  },
                                  "nativeSrc": "19002:12:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "19002:12:7"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "18995:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "18995:3:7"
                              },
                              "nativeSrc": "18995:20:7",
                              "nodeType": "YulFunctionCall",
                              "src": "18995:20:7"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "18985:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "18985:3:7"
                          },
                          "nativeSrc": "18985:31:7",
                          "nodeType": "YulFunctionCall",
                          "src": "18985:31:7"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nativeSrc": "18979:2:7",
                            "nodeType": "YulTypedName",
                            "src": "18979:2:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "19029:24:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "19029:24:7",
                        "value": {
                          "name": "deleteStart",
                          "nativeSrc": "19042:11:7",
                          "nodeType": "YulIdentifier",
                          "src": "19042:11:7"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nativeSrc": "19033:5:7",
                            "nodeType": "YulTypedName",
                            "src": "19033:5:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "19127:20:7",
                          "nodeType": "YulBlock",
                          "src": "19127:20:7",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "19136:5:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "19136:5:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19143:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "19143:1:7",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nativeSrc": "19129:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19129:6:7"
                                },
                                "nativeSrc": "19129:16:7",
                                "nodeType": "YulFunctionCall",
                                "src": "19129:16:7"
                              },
                              "nativeSrc": "19129:16:7",
                              "nodeType": "YulExpressionStatement",
                              "src": "19129:16:7"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nativeSrc": "19077:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "19077:5:7"
                            },
                            {
                              "name": "_1",
                              "nativeSrc": "19084:2:7",
                              "nodeType": "YulIdentifier",
                              "src": "19084:2:7"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "19074:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "19074:2:7"
                          },
                          "nativeSrc": "19074:13:7",
                          "nodeType": "YulFunctionCall",
                          "src": "19074:13:7"
                        },
                        "nativeSrc": "19066:81:7",
                        "nodeType": "YulForLoop",
                        "post": {
                          "nativeSrc": "19088:26:7",
                          "nodeType": "YulBlock",
                          "src": "19088:26:7",
                          "statements": [
                            {
                              "nativeSrc": "19090:22:7",
                              "nodeType": "YulAssignment",
                              "src": "19090:22:7",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "19103:5:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "19103:5:7"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19110:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "19110:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "19099:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19099:3:7"
                                },
                                "nativeSrc": "19099:13:7",
                                "nodeType": "YulFunctionCall",
                                "src": "19099:13:7"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nativeSrc": "19090:5:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19090:5:7"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nativeSrc": "19070:3:7",
                          "nodeType": "YulBlock",
                          "src": "19070:3:7",
                          "statements": []
                        },
                        "src": "19066:81:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "18742:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "18742:3:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18747:2:7",
                        "nodeType": "YulLiteral",
                        "src": "18747:2:7",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "18739:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "18739:2:7"
                    },
                    "nativeSrc": "18739:11:7",
                    "nodeType": "YulFunctionCall",
                    "src": "18739:11:7"
                  },
                  "nativeSrc": "18736:421:7",
                  "nodeType": "YulIf",
                  "src": "18736:421:7"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nativeSrc": "18645:518:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nativeSrc": "18698:5:7",
                "nodeType": "YulTypedName",
                "src": "18698:5:7",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "18705:3:7",
                "nodeType": "YulTypedName",
                "src": "18705:3:7",
                "type": ""
              },
              {
                "name": "startIndex",
                "nativeSrc": "18710:10:7",
                "nodeType": "YulTypedName",
                "src": "18710:10:7",
                "type": ""
              }
            ],
            "src": "18645:518:7"
          },
          {
            "body": {
              "nativeSrc": "19253:81:7",
              "nodeType": "YulBlock",
              "src": "19253:81:7",
              "statements": [
                {
                  "nativeSrc": "19263:65:7",
                  "nodeType": "YulAssignment",
                  "src": "19263:65:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nativeSrc": "19278:4:7",
                            "nodeType": "YulIdentifier",
                            "src": "19278:4:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "19296:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "19296:1:7",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nativeSrc": "19299:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "19299:3:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "19292:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19292:3:7"
                                    },
                                    "nativeSrc": "19292:11:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19292:11:7"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "19309:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "19309:1:7",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "19305:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19305:3:7"
                                    },
                                    "nativeSrc": "19305:6:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19305:6:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "19288:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19288:3:7"
                                },
                                "nativeSrc": "19288:24:7",
                                "nodeType": "YulFunctionCall",
                                "src": "19288:24:7"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "19284:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "19284:3:7"
                            },
                            "nativeSrc": "19284:29:7",
                            "nodeType": "YulFunctionCall",
                            "src": "19284:29:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "19274:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "19274:3:7"
                        },
                        "nativeSrc": "19274:40:7",
                        "nodeType": "YulFunctionCall",
                        "src": "19274:40:7"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "19320:1:7",
                            "nodeType": "YulLiteral",
                            "src": "19320:1:7",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nativeSrc": "19323:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "19323:3:7"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "19316:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "19316:3:7"
                        },
                        "nativeSrc": "19316:11:7",
                        "nodeType": "YulFunctionCall",
                        "src": "19316:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "19271:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "19271:2:7"
                    },
                    "nativeSrc": "19271:57:7",
                    "nodeType": "YulFunctionCall",
                    "src": "19271:57:7"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nativeSrc": "19263:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "19263:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nativeSrc": "19168:166:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "19230:4:7",
                "nodeType": "YulTypedName",
                "src": "19230:4:7",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "19236:3:7",
                "nodeType": "YulTypedName",
                "src": "19236:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nativeSrc": "19244:4:7",
                "nodeType": "YulTypedName",
                "src": "19244:4:7",
                "type": ""
              }
            ],
            "src": "19168:166:7"
          },
          {
            "body": {
              "nativeSrc": "19442:1095:7",
              "nodeType": "YulBlock",
              "src": "19442:1095:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "19483:22:7",
                    "nodeType": "YulBlock",
                    "src": "19483:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "19485:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "19485:16:7"
                          },
                          "nativeSrc": "19485:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "19485:18:7"
                        },
                        "nativeSrc": "19485:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "19485:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "19458:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "19458:3:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "19463:18:7",
                        "nodeType": "YulLiteral",
                        "src": "19463:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "19455:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "19455:2:7"
                    },
                    "nativeSrc": "19455:27:7",
                    "nodeType": "YulFunctionCall",
                    "src": "19455:27:7"
                  },
                  "nativeSrc": "19452:53:7",
                  "nodeType": "YulIf",
                  "src": "19452:53:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "19558:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "19558:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nativeSrc": "19596:4:7",
                                "nodeType": "YulIdentifier",
                                "src": "19596:4:7"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nativeSrc": "19590:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "19590:5:7"
                            },
                            "nativeSrc": "19590:11:7",
                            "nodeType": "YulFunctionCall",
                            "src": "19590:11:7"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nativeSrc": "19564:25:7",
                          "nodeType": "YulIdentifier",
                          "src": "19564:25:7"
                        },
                        "nativeSrc": "19564:38:7",
                        "nodeType": "YulFunctionCall",
                        "src": "19564:38:7"
                      },
                      {
                        "name": "len",
                        "nativeSrc": "19604:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "19604:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nativeSrc": "19514:43:7",
                      "nodeType": "YulIdentifier",
                      "src": "19514:43:7"
                    },
                    "nativeSrc": "19514:94:7",
                    "nodeType": "YulFunctionCall",
                    "src": "19514:94:7"
                  },
                  "nativeSrc": "19514:94:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "19514:94:7"
                },
                {
                  "nativeSrc": "19617:18:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "19617:18:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "19634:1:7",
                    "nodeType": "YulLiteral",
                    "src": "19634:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "19621:9:7",
                      "nodeType": "YulTypedName",
                      "src": "19621:9:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "19678:601:7",
                        "nodeType": "YulBlock",
                        "src": "19678:601:7",
                        "statements": [
                          {
                            "nativeSrc": "19692:32:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "19692:32:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "len",
                                  "nativeSrc": "19711:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19711:3:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "19720:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "19720:2:7",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "19716:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "19716:3:7"
                                  },
                                  "nativeSrc": "19716:7:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "19716:7:7"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "19707:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "19707:3:7"
                              },
                              "nativeSrc": "19707:17:7",
                              "nodeType": "YulFunctionCall",
                              "src": "19707:17:7"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nativeSrc": "19696:7:7",
                                "nodeType": "YulTypedName",
                                "src": "19696:7:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "19737:49:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "19737:49:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "19781:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19781:4:7"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nativeSrc": "19751:29:7",
                                "nodeType": "YulIdentifier",
                                "src": "19751:29:7"
                              },
                              "nativeSrc": "19751:35:7",
                              "nodeType": "YulFunctionCall",
                              "src": "19751:35:7"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nativeSrc": "19741:6:7",
                                "nodeType": "YulTypedName",
                                "src": "19741:6:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "19799:10:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "19799:10:7",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "19808:1:7",
                              "nodeType": "YulLiteral",
                              "src": "19808:1:7",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "19803:1:7",
                                "nodeType": "YulTypedName",
                                "src": "19803:1:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "19879:172:7",
                              "nodeType": "YulBlock",
                              "src": "19879:172:7",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "19904:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "19904:6:7"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nativeSrc": "19929:3:7",
                                                "nodeType": "YulIdentifier",
                                                "src": "19929:3:7"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nativeSrc": "19934:9:7",
                                                "nodeType": "YulIdentifier",
                                                "src": "19934:9:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "19925:3:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "19925:3:7"
                                            },
                                            "nativeSrc": "19925:19:7",
                                            "nodeType": "YulFunctionCall",
                                            "src": "19925:19:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nativeSrc": "19912:12:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "19912:12:7"
                                        },
                                        "nativeSrc": "19912:33:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "19912:33:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "19897:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19897:6:7"
                                    },
                                    "nativeSrc": "19897:49:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19897:49:7"
                                  },
                                  "nativeSrc": "19897:49:7",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "19897:49:7"
                                },
                                {
                                  "nativeSrc": "19963:24:7",
                                  "nodeType": "YulAssignment",
                                  "src": "19963:24:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "19977:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "19977:6:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "19985:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "19985:1:7",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "19973:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19973:3:7"
                                    },
                                    "nativeSrc": "19973:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19973:14:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nativeSrc": "19963:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19963:6:7"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "20004:33:7",
                                  "nodeType": "YulAssignment",
                                  "src": "20004:33:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nativeSrc": "20021:9:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "20021:9:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "20032:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "20032:4:7",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "20017:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "20017:3:7"
                                    },
                                    "nativeSrc": "20017:20:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20017:20:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nativeSrc": "20004:9:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "20004:9:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "19833:1:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19833:1:7"
                                },
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "19836:7:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "19836:7:7"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "19830:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "19830:2:7"
                              },
                              "nativeSrc": "19830:14:7",
                              "nodeType": "YulFunctionCall",
                              "src": "19830:14:7"
                            },
                            "nativeSrc": "19822:229:7",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "19845:21:7",
                              "nodeType": "YulBlock",
                              "src": "19845:21:7",
                              "statements": [
                                {
                                  "nativeSrc": "19847:17:7",
                                  "nodeType": "YulAssignment",
                                  "src": "19847:17:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "19856:1:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "19856:1:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "19859:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "19859:4:7",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "19852:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19852:3:7"
                                    },
                                    "nativeSrc": "19852:12:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19852:12:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "19847:1:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "19847:1:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "19826:3:7",
                              "nodeType": "YulBlock",
                              "src": "19826:3:7",
                              "statements": []
                            },
                            "src": "19822:229:7"
                          },
                          {
                            "body": {
                              "nativeSrc": "20096:127:7",
                              "nodeType": "YulBlock",
                              "src": "20096:127:7",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "20121:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "20121:6:7"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src",
                                                    "nativeSrc": "20150:3:7",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20150:3:7"
                                                  },
                                                  {
                                                    "name": "srcOffset",
                                                    "nativeSrc": "20155:9:7",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "20155:9:7"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "20146:3:7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20146:3:7"
                                                },
                                                "nativeSrc": "20146:19:7",
                                                "nodeType": "YulFunctionCall",
                                                "src": "20146:19:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nativeSrc": "20133:12:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "20133:12:7"
                                            },
                                            "nativeSrc": "20133:33:7",
                                            "nodeType": "YulFunctionCall",
                                            "src": "20133:33:7"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "20184:1:7",
                                                            "nodeType": "YulLiteral",
                                                            "src": "20184:1:7",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "len",
                                                            "nativeSrc": "20187:3:7",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "20187:3:7"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nativeSrc": "20180:3:7",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "20180:3:7"
                                                        },
                                                        "nativeSrc": "20180:11:7",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "20180:11:7"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "20193:3:7",
                                                        "nodeType": "YulLiteral",
                                                        "src": "20193:3:7",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nativeSrc": "20176:3:7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "20176:3:7"
                                                    },
                                                    "nativeSrc": "20176:21:7",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "20176:21:7"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "20203:1:7",
                                                        "nodeType": "YulLiteral",
                                                        "src": "20203:1:7",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nativeSrc": "20199:3:7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "20199:3:7"
                                                    },
                                                    "nativeSrc": "20199:6:7",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "20199:6:7"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nativeSrc": "20172:3:7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20172:3:7"
                                                },
                                                "nativeSrc": "20172:34:7",
                                                "nodeType": "YulFunctionCall",
                                                "src": "20172:34:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nativeSrc": "20168:3:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "20168:3:7"
                                            },
                                            "nativeSrc": "20168:39:7",
                                            "nodeType": "YulFunctionCall",
                                            "src": "20168:39:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nativeSrc": "20129:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "20129:3:7"
                                        },
                                        "nativeSrc": "20129:79:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20129:79:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "20114:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "20114:6:7"
                                    },
                                    "nativeSrc": "20114:95:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20114:95:7"
                                  },
                                  "nativeSrc": "20114:95:7",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "20114:95:7"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "20070:7:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "20070:7:7"
                                },
                                {
                                  "name": "len",
                                  "nativeSrc": "20079:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "20079:3:7"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "20067:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "20067:2:7"
                              },
                              "nativeSrc": "20067:16:7",
                              "nodeType": "YulFunctionCall",
                              "src": "20067:16:7"
                            },
                            "nativeSrc": "20064:159:7",
                            "nodeType": "YulIf",
                            "src": "20064:159:7"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "20243:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "20243:4:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "20257:1:7",
                                          "nodeType": "YulLiteral",
                                          "src": "20257:1:7",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "len",
                                          "nativeSrc": "20260:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "20260:3:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "20253:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "20253:3:7"
                                      },
                                      "nativeSrc": "20253:11:7",
                                      "nodeType": "YulFunctionCall",
                                      "src": "20253:11:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "20266:1:7",
                                      "nodeType": "YulLiteral",
                                      "src": "20266:1:7",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "20249:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "20249:3:7"
                                  },
                                  "nativeSrc": "20249:19:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "20249:19:7"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "20236:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "20236:6:7"
                              },
                              "nativeSrc": "20236:33:7",
                              "nodeType": "YulFunctionCall",
                              "src": "20236:33:7"
                            },
                            "nativeSrc": "20236:33:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "20236:33:7"
                          }
                        ]
                      },
                      "nativeSrc": "19671:608:7",
                      "nodeType": "YulCase",
                      "src": "19671:608:7",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "19676:1:7",
                        "nodeType": "YulLiteral",
                        "src": "19676:1:7",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "20296:235:7",
                        "nodeType": "YulBlock",
                        "src": "20296:235:7",
                        "statements": [
                          {
                            "nativeSrc": "20310:14:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "20310:14:7",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "20323:1:7",
                              "nodeType": "YulLiteral",
                              "src": "20323:1:7",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nativeSrc": "20314:5:7",
                                "nodeType": "YulTypedName",
                                "src": "20314:5:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "20356:74:7",
                              "nodeType": "YulBlock",
                              "src": "20356:74:7",
                              "statements": [
                                {
                                  "nativeSrc": "20374:42:7",
                                  "nodeType": "YulAssignment",
                                  "src": "20374:42:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "20400:3:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "20400:3:7"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "20405:9:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "20405:9:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "20396:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "20396:3:7"
                                        },
                                        "nativeSrc": "20396:19:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20396:19:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nativeSrc": "20383:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "20383:12:7"
                                    },
                                    "nativeSrc": "20383:33:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20383:33:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "20374:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "20374:5:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "len",
                              "nativeSrc": "20340:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "20340:3:7"
                            },
                            "nativeSrc": "20337:93:7",
                            "nodeType": "YulIf",
                            "src": "20337:93:7"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "20450:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "20450:4:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "20509:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "20509:5:7"
                                    },
                                    {
                                      "name": "len",
                                      "nativeSrc": "20516:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "20516:3:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nativeSrc": "20456:52:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "20456:52:7"
                                  },
                                  "nativeSrc": "20456:64:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "20456:64:7"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "20443:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "20443:6:7"
                              },
                              "nativeSrc": "20443:78:7",
                              "nodeType": "YulFunctionCall",
                              "src": "20443:78:7"
                            },
                            "nativeSrc": "20443:78:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "20443:78:7"
                          }
                        ]
                      },
                      "nativeSrc": "20288:243:7",
                      "nodeType": "YulCase",
                      "src": "20288:243:7",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "19654:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "19654:3:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "19659:2:7",
                        "nodeType": "YulLiteral",
                        "src": "19659:2:7",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "19651:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "19651:2:7"
                    },
                    "nativeSrc": "19651:11:7",
                    "nodeType": "YulFunctionCall",
                    "src": "19651:11:7"
                  },
                  "nativeSrc": "19644:887:7",
                  "nodeType": "YulSwitch",
                  "src": "19644:887:7"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
            "nativeSrc": "19339:1198:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "19422:4:7",
                "nodeType": "YulTypedName",
                "src": "19422:4:7",
                "type": ""
              },
              {
                "name": "src",
                "nativeSrc": "19428:3:7",
                "nodeType": "YulTypedName",
                "src": "19428:3:7",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "19433:3:7",
                "nodeType": "YulTypedName",
                "src": "19433:3:7",
                "type": ""
              }
            ],
            "src": "19339:1198:7"
          },
          {
            "body": {
              "nativeSrc": "20620:233:7",
              "nodeType": "YulBlock",
              "src": "20620:233:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "20637:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "20637:3:7"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "20642:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "20642:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "20630:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "20630:6:7"
                    },
                    "nativeSrc": "20630:19:7",
                    "nodeType": "YulFunctionCall",
                    "src": "20630:19:7"
                  },
                  "nativeSrc": "20630:19:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "20630:19:7"
                },
                {
                  "body": {
                    "nativeSrc": "20693:16:7",
                    "nodeType": "YulBlock",
                    "src": "20693:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "20702:1:7",
                              "nodeType": "YulLiteral",
                              "src": "20702:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "20705:1:7",
                              "nodeType": "YulLiteral",
                              "src": "20705:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "20695:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "20695:6:7"
                          },
                          "nativeSrc": "20695:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "20695:12:7"
                        },
                        "nativeSrc": "20695:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "20695:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "20664:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "20664:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "20680:3:7",
                                "nodeType": "YulLiteral",
                                "src": "20680:3:7",
                                "type": "",
                                "value": "251"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "20685:1:7",
                                "nodeType": "YulLiteral",
                                "src": "20685:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "20676:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "20676:3:7"
                            },
                            "nativeSrc": "20676:11:7",
                            "nodeType": "YulFunctionCall",
                            "src": "20676:11:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "20689:1:7",
                            "nodeType": "YulLiteral",
                            "src": "20689:1:7",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "20672:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "20672:3:7"
                        },
                        "nativeSrc": "20672:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "20672:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "20661:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "20661:2:7"
                    },
                    "nativeSrc": "20661:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "20661:31:7"
                  },
                  "nativeSrc": "20658:51:7",
                  "nodeType": "YulIf",
                  "src": "20658:51:7"
                },
                {
                  "nativeSrc": "20718:30:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "20718:30:7",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "20738:1:7",
                        "nodeType": "YulLiteral",
                        "src": "20738:1:7",
                        "type": "",
                        "value": "5"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "20741:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "20741:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nativeSrc": "20734:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "20734:3:7"
                    },
                    "nativeSrc": "20734:14:7",
                    "nodeType": "YulFunctionCall",
                    "src": "20734:14:7"
                  },
                  "variables": [
                    {
                      "name": "length_1",
                      "nativeSrc": "20722:8:7",
                      "nodeType": "YulTypedName",
                      "src": "20722:8:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "20774:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "20774:3:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "20779:4:7",
                            "nodeType": "YulLiteral",
                            "src": "20779:4:7",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "20770:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "20770:3:7"
                        },
                        "nativeSrc": "20770:14:7",
                        "nodeType": "YulFunctionCall",
                        "src": "20770:14:7"
                      },
                      {
                        "name": "start",
                        "nativeSrc": "20786:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "20786:5:7"
                      },
                      {
                        "name": "length_1",
                        "nativeSrc": "20793:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "20793:8:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "20757:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "20757:12:7"
                    },
                    "nativeSrc": "20757:45:7",
                    "nodeType": "YulFunctionCall",
                    "src": "20757:45:7"
                  },
                  "nativeSrc": "20757:45:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "20757:45:7"
                },
                {
                  "nativeSrc": "20811:36:7",
                  "nodeType": "YulAssignment",
                  "src": "20811:36:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "20826:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "20826:3:7"
                          },
                          {
                            "name": "length_1",
                            "nativeSrc": "20831:8:7",
                            "nodeType": "YulIdentifier",
                            "src": "20831:8:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "20822:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "20822:3:7"
                        },
                        "nativeSrc": "20822:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "20822:18:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "20842:4:7",
                        "nodeType": "YulLiteral",
                        "src": "20842:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "20818:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "20818:3:7"
                    },
                    "nativeSrc": "20818:29:7",
                    "nodeType": "YulFunctionCall",
                    "src": "20818:29:7"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "20811:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "20811:3:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_array_uint256_dyn_calldata",
            "nativeSrc": "20542:311:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "start",
                "nativeSrc": "20589:5:7",
                "nodeType": "YulTypedName",
                "src": "20589:5:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "20596:6:7",
                "nodeType": "YulTypedName",
                "src": "20596:6:7",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "20604:3:7",
                "nodeType": "YulTypedName",
                "src": "20604:3:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "20612:3:7",
                "nodeType": "YulTypedName",
                "src": "20612:3:7",
                "type": ""
              }
            ],
            "src": "20542:311:7"
          },
          {
            "body": {
              "nativeSrc": "21077:259:7",
              "nodeType": "YulBlock",
              "src": "21077:259:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "21094:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "21094:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "21105:2:7",
                        "nodeType": "YulLiteral",
                        "src": "21105:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21087:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21087:6:7"
                    },
                    "nativeSrc": "21087:21:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21087:21:7"
                  },
                  "nativeSrc": "21087:21:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21087:21:7"
                },
                {
                  "nativeSrc": "21117:76:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "21117:76:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "21158:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "21158:6:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "21166:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "21166:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21178:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21178:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21189:2:7",
                            "nodeType": "YulLiteral",
                            "src": "21189:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21174:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21174:3:7"
                        },
                        "nativeSrc": "21174:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21174:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "21131:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "21131:26:7"
                    },
                    "nativeSrc": "21131:62:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21131:62:7"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "21121:6:7",
                      "nodeType": "YulTypedName",
                      "src": "21121:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21213:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21213:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21224:2:7",
                            "nodeType": "YulLiteral",
                            "src": "21224:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21209:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21209:3:7"
                        },
                        "nativeSrc": "21209:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21209:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "21233:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "21233:6:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "21241:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21241:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "21229:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21229:3:7"
                        },
                        "nativeSrc": "21229:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21229:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21202:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21202:6:7"
                    },
                    "nativeSrc": "21202:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21202:50:7"
                  },
                  "nativeSrc": "21202:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21202:50:7"
                },
                {
                  "nativeSrc": "21261:69:7",
                  "nodeType": "YulAssignment",
                  "src": "21261:69:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nativeSrc": "21307:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "21307:6:7"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "21315:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "21315:6:7"
                      },
                      {
                        "name": "tail_1",
                        "nativeSrc": "21323:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "21323:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "21269:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "21269:37:7"
                    },
                    "nativeSrc": "21269:61:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21269:61:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "21261:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "21261:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nativeSrc": "20858:478:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "21022:9:7",
                "nodeType": "YulTypedName",
                "src": "21022:9:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "21033:6:7",
                "nodeType": "YulTypedName",
                "src": "21033:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "21041:6:7",
                "nodeType": "YulTypedName",
                "src": "21041:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "21049:6:7",
                "nodeType": "YulTypedName",
                "src": "21049:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "21057:6:7",
                "nodeType": "YulTypedName",
                "src": "21057:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "21068:4:7",
                "nodeType": "YulTypedName",
                "src": "21068:4:7",
                "type": ""
              }
            ],
            "src": "20858:478:7"
          },
          {
            "body": {
              "nativeSrc": "21628:461:7",
              "nodeType": "YulBlock",
              "src": "21628:461:7",
              "statements": [
                {
                  "nativeSrc": "21638:27:7",
                  "nodeType": "YulAssignment",
                  "src": "21638:27:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "21650:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "21650:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "21661:3:7",
                        "nodeType": "YulLiteral",
                        "src": "21661:3:7",
                        "type": "",
                        "value": "256"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "21646:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "21646:3:7"
                    },
                    "nativeSrc": "21646:19:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21646:19:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "21638:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "21638:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "21681:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "21681:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "21696:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "21696:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "21712:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "21712:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "21717:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "21717:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "21708:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "21708:3:7"
                                },
                                "nativeSrc": "21708:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "21708:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "21721:1:7",
                                "nodeType": "YulLiteral",
                                "src": "21721:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "21704:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "21704:3:7"
                            },
                            "nativeSrc": "21704:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "21704:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "21692:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21692:3:7"
                        },
                        "nativeSrc": "21692:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21692:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21674:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21674:6:7"
                    },
                    "nativeSrc": "21674:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21674:51:7"
                  },
                  "nativeSrc": "21674:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21674:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21745:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21745:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21756:2:7",
                            "nodeType": "YulLiteral",
                            "src": "21756:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21741:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21741:3:7"
                        },
                        "nativeSrc": "21741:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21741:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "21765:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "21765:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "21781:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "21781:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "21786:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "21786:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "21777:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "21777:3:7"
                                },
                                "nativeSrc": "21777:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "21777:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "21790:1:7",
                                "nodeType": "YulLiteral",
                                "src": "21790:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "21773:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "21773:3:7"
                            },
                            "nativeSrc": "21773:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "21773:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "21761:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21761:3:7"
                        },
                        "nativeSrc": "21761:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21761:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21734:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21734:6:7"
                    },
                    "nativeSrc": "21734:60:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21734:60:7"
                  },
                  "nativeSrc": "21734:60:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21734:60:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21814:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21814:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21825:2:7",
                            "nodeType": "YulLiteral",
                            "src": "21825:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21810:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21810:3:7"
                        },
                        "nativeSrc": "21810:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21810:18:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "21830:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "21830:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21803:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21803:6:7"
                    },
                    "nativeSrc": "21803:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21803:34:7"
                  },
                  "nativeSrc": "21803:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21803:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21857:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21857:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21868:2:7",
                            "nodeType": "YulLiteral",
                            "src": "21868:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21853:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21853:3:7"
                        },
                        "nativeSrc": "21853:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21853:18:7"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "21873:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "21873:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21846:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21846:6:7"
                    },
                    "nativeSrc": "21846:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21846:34:7"
                  },
                  "nativeSrc": "21846:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21846:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21900:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21900:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21911:3:7",
                            "nodeType": "YulLiteral",
                            "src": "21911:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21896:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21896:3:7"
                        },
                        "nativeSrc": "21896:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21896:19:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value4",
                                "nativeSrc": "21931:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "21931:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "21924:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "21924:6:7"
                            },
                            "nativeSrc": "21924:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "21924:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nativeSrc": "21917:6:7",
                          "nodeType": "YulIdentifier",
                          "src": "21917:6:7"
                        },
                        "nativeSrc": "21917:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21917:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21889:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21889:6:7"
                    },
                    "nativeSrc": "21889:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21889:51:7"
                  },
                  "nativeSrc": "21889:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21889:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "21960:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "21960:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21971:3:7",
                            "nodeType": "YulLiteral",
                            "src": "21971:3:7",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "21956:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21956:3:7"
                        },
                        "nativeSrc": "21956:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21956:19:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value5",
                            "nativeSrc": "21981:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "21981:6:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "21989:4:7",
                            "nodeType": "YulLiteral",
                            "src": "21989:4:7",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "21977:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "21977:3:7"
                        },
                        "nativeSrc": "21977:17:7",
                        "nodeType": "YulFunctionCall",
                        "src": "21977:17:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "21949:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "21949:6:7"
                    },
                    "nativeSrc": "21949:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "21949:46:7"
                  },
                  "nativeSrc": "21949:46:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "21949:46:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22015:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22015:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22026:3:7",
                            "nodeType": "YulLiteral",
                            "src": "22026:3:7",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22011:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22011:3:7"
                        },
                        "nativeSrc": "22011:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22011:19:7"
                      },
                      {
                        "name": "value6",
                        "nativeSrc": "22032:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "22032:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22004:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22004:6:7"
                    },
                    "nativeSrc": "22004:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22004:35:7"
                  },
                  "nativeSrc": "22004:35:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22004:35:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22059:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22059:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22070:3:7",
                            "nodeType": "YulLiteral",
                            "src": "22070:3:7",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22055:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22055:3:7"
                        },
                        "nativeSrc": "22055:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22055:19:7"
                      },
                      {
                        "name": "value7",
                        "nativeSrc": "22076:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "22076:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22048:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22048:6:7"
                    },
                    "nativeSrc": "22048:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22048:35:7"
                  },
                  "nativeSrc": "22048:35:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22048:35:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
            "nativeSrc": "21341:748:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "21541:9:7",
                "nodeType": "YulTypedName",
                "src": "21541:9:7",
                "type": ""
              },
              {
                "name": "value7",
                "nativeSrc": "21552:6:7",
                "nodeType": "YulTypedName",
                "src": "21552:6:7",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "21560:6:7",
                "nodeType": "YulTypedName",
                "src": "21560:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "21568:6:7",
                "nodeType": "YulTypedName",
                "src": "21568:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "21576:6:7",
                "nodeType": "YulTypedName",
                "src": "21576:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "21584:6:7",
                "nodeType": "YulTypedName",
                "src": "21584:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "21592:6:7",
                "nodeType": "YulTypedName",
                "src": "21592:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "21600:6:7",
                "nodeType": "YulTypedName",
                "src": "21600:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "21608:6:7",
                "nodeType": "YulTypedName",
                "src": "21608:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "21619:4:7",
                "nodeType": "YulTypedName",
                "src": "21619:4:7",
                "type": ""
              }
            ],
            "src": "21341:748:7"
          },
          {
            "body": {
              "nativeSrc": "22359:401:7",
              "nodeType": "YulBlock",
              "src": "22359:401:7",
              "statements": [
                {
                  "nativeSrc": "22369:27:7",
                  "nodeType": "YulAssignment",
                  "src": "22369:27:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "22381:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "22381:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22392:3:7",
                        "nodeType": "YulLiteral",
                        "src": "22392:3:7",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "22377:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "22377:3:7"
                    },
                    "nativeSrc": "22377:19:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22377:19:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "22369:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "22369:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "22412:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "22412:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "22427:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "22427:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22443:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "22443:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22448:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "22448:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "22439:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "22439:3:7"
                                },
                                "nativeSrc": "22439:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "22439:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "22452:1:7",
                                "nodeType": "YulLiteral",
                                "src": "22452:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "22435:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "22435:3:7"
                            },
                            "nativeSrc": "22435:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "22435:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "22423:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22423:3:7"
                        },
                        "nativeSrc": "22423:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22423:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22405:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22405:6:7"
                    },
                    "nativeSrc": "22405:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22405:51:7"
                  },
                  "nativeSrc": "22405:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22405:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22476:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22476:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22487:2:7",
                            "nodeType": "YulLiteral",
                            "src": "22487:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22472:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22472:3:7"
                        },
                        "nativeSrc": "22472:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22472:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "22496:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "22496:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22512:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "22512:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22517:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "22517:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "22508:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "22508:3:7"
                                },
                                "nativeSrc": "22508:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "22508:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "22521:1:7",
                                "nodeType": "YulLiteral",
                                "src": "22521:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "22504:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "22504:3:7"
                            },
                            "nativeSrc": "22504:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "22504:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "22492:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22492:3:7"
                        },
                        "nativeSrc": "22492:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22492:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22465:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22465:6:7"
                    },
                    "nativeSrc": "22465:60:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22465:60:7"
                  },
                  "nativeSrc": "22465:60:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22465:60:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22545:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22545:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22556:2:7",
                            "nodeType": "YulLiteral",
                            "src": "22556:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22541:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22541:3:7"
                        },
                        "nativeSrc": "22541:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22541:18:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "22561:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "22561:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22534:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22534:6:7"
                    },
                    "nativeSrc": "22534:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22534:34:7"
                  },
                  "nativeSrc": "22534:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22534:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22588:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22588:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22599:2:7",
                            "nodeType": "YulLiteral",
                            "src": "22599:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22584:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22584:3:7"
                        },
                        "nativeSrc": "22584:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22584:18:7"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "22604:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "22604:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22577:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22577:6:7"
                    },
                    "nativeSrc": "22577:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22577:34:7"
                  },
                  "nativeSrc": "22577:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22577:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22631:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22631:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22642:3:7",
                            "nodeType": "YulLiteral",
                            "src": "22642:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22627:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22627:3:7"
                        },
                        "nativeSrc": "22627:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22627:19:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value4",
                            "nativeSrc": "22652:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "22652:6:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22660:4:7",
                            "nodeType": "YulLiteral",
                            "src": "22660:4:7",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "22648:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22648:3:7"
                        },
                        "nativeSrc": "22648:17:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22648:17:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22620:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22620:6:7"
                    },
                    "nativeSrc": "22620:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22620:46:7"
                  },
                  "nativeSrc": "22620:46:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22620:46:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22686:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22686:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22697:3:7",
                            "nodeType": "YulLiteral",
                            "src": "22697:3:7",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22682:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22682:3:7"
                        },
                        "nativeSrc": "22682:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22682:19:7"
                      },
                      {
                        "name": "value5",
                        "nativeSrc": "22703:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "22703:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22675:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22675:6:7"
                    },
                    "nativeSrc": "22675:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22675:35:7"
                  },
                  "nativeSrc": "22675:35:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22675:35:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "22730:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "22730:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22741:3:7",
                            "nodeType": "YulLiteral",
                            "src": "22741:3:7",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22726:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22726:3:7"
                        },
                        "nativeSrc": "22726:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22726:19:7"
                      },
                      {
                        "name": "value6",
                        "nativeSrc": "22747:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "22747:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22719:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22719:6:7"
                    },
                    "nativeSrc": "22719:35:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22719:35:7"
                  },
                  "nativeSrc": "22719:35:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22719:35:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
            "nativeSrc": "22094:666:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "22280:9:7",
                "nodeType": "YulTypedName",
                "src": "22280:9:7",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "22291:6:7",
                "nodeType": "YulTypedName",
                "src": "22291:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "22299:6:7",
                "nodeType": "YulTypedName",
                "src": "22299:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "22307:6:7",
                "nodeType": "YulTypedName",
                "src": "22307:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "22315:6:7",
                "nodeType": "YulTypedName",
                "src": "22315:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "22323:6:7",
                "nodeType": "YulTypedName",
                "src": "22323:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "22331:6:7",
                "nodeType": "YulTypedName",
                "src": "22331:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "22339:6:7",
                "nodeType": "YulTypedName",
                "src": "22339:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "22350:4:7",
                "nodeType": "YulTypedName",
                "src": "22350:4:7",
                "type": ""
              }
            ],
            "src": "22094:666:7"
          },
          {
            "body": {
              "nativeSrc": "22888:161:7",
              "nodeType": "YulBlock",
              "src": "22888:161:7",
              "statements": [
                {
                  "nativeSrc": "22898:26:7",
                  "nodeType": "YulAssignment",
                  "src": "22898:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "22910:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "22910:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22921:2:7",
                        "nodeType": "YulLiteral",
                        "src": "22921:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "22906:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "22906:3:7"
                    },
                    "nativeSrc": "22906:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22906:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "22898:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "22898:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "22940:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "22940:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "22955:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "22955:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22971:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "22971:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "22976:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "22976:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "22967:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "22967:3:7"
                                },
                                "nativeSrc": "22967:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "22967:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "22980:1:7",
                                "nodeType": "YulLiteral",
                                "src": "22980:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "22963:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "22963:3:7"
                            },
                            "nativeSrc": "22963:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "22963:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "22951:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "22951:3:7"
                        },
                        "nativeSrc": "22951:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "22951:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22933:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22933:6:7"
                    },
                    "nativeSrc": "22933:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22933:51:7"
                  },
                  "nativeSrc": "22933:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22933:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "23004:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "23004:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "23015:2:7",
                            "nodeType": "YulLiteral",
                            "src": "23015:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "23000:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "23000:3:7"
                        },
                        "nativeSrc": "23000:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "23000:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value1",
                                "nativeSrc": "23034:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "23034:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "23027:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "23027:6:7"
                            },
                            "nativeSrc": "23027:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "23027:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nativeSrc": "23020:6:7",
                          "nodeType": "YulIdentifier",
                          "src": "23020:6:7"
                        },
                        "nativeSrc": "23020:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "23020:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "22993:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "22993:6:7"
                    },
                    "nativeSrc": "22993:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "22993:50:7"
                  },
                  "nativeSrc": "22993:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "22993:50:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
            "nativeSrc": "22765:284:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "22849:9:7",
                "nodeType": "YulTypedName",
                "src": "22849:9:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "22860:6:7",
                "nodeType": "YulTypedName",
                "src": "22860:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "22868:6:7",
                "nodeType": "YulTypedName",
                "src": "22868:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "22879:4:7",
                "nodeType": "YulTypedName",
                "src": "22879:4:7",
                "type": ""
              }
            ],
            "src": "22765:284:7"
          },
          {
            "body": {
              "nativeSrc": "23164:435:7",
              "nodeType": "YulBlock",
              "src": "23164:435:7",
              "statements": [
                {
                  "nativeSrc": "23174:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "23174:51:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "23213:11:7",
                        "nodeType": "YulIdentifier",
                        "src": "23213:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "23200:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "23200:12:7"
                    },
                    "nativeSrc": "23200:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23200:25:7"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "23178:18:7",
                      "nodeType": "YulTypedName",
                      "src": "23178:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "23314:16:7",
                    "nodeType": "YulBlock",
                    "src": "23314:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "23323:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23323:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "23326:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23326:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "23316:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "23316:6:7"
                          },
                          "nativeSrc": "23316:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "23316:12:7"
                        },
                        "nativeSrc": "23316:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "23316:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "23248:18:7",
                            "nodeType": "YulIdentifier",
                            "src": "23248:18:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "23276:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "23276:12:7"
                                    },
                                    "nativeSrc": "23276:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23276:14:7"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "23292:8:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "23292:8:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "23272:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "23272:3:7"
                                },
                                "nativeSrc": "23272:29:7",
                                "nodeType": "YulFunctionCall",
                                "src": "23272:29:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "23307:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "23307:2:7",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "23303:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "23303:3:7"
                                },
                                "nativeSrc": "23303:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "23303:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "23268:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "23268:3:7"
                            },
                            "nativeSrc": "23268:43:7",
                            "nodeType": "YulFunctionCall",
                            "src": "23268:43:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "23244:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "23244:3:7"
                        },
                        "nativeSrc": "23244:68:7",
                        "nodeType": "YulFunctionCall",
                        "src": "23244:68:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "23237:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "23237:6:7"
                    },
                    "nativeSrc": "23237:76:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23237:76:7"
                  },
                  "nativeSrc": "23234:96:7",
                  "nodeType": "YulIf",
                  "src": "23234:96:7"
                },
                {
                  "nativeSrc": "23339:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "23339:47:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "23357:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "23357:8:7"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "23367:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "23367:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "23353:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "23353:3:7"
                    },
                    "nativeSrc": "23353:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23353:33:7"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "23343:6:7",
                      "nodeType": "YulTypedName",
                      "src": "23343:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "23395:30:7",
                  "nodeType": "YulAssignment",
                  "src": "23395:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "23418:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "23418:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "23405:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "23405:12:7"
                    },
                    "nativeSrc": "23405:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23405:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "23395:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "23395:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "23468:16:7",
                    "nodeType": "YulBlock",
                    "src": "23468:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "23477:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23477:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "23480:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23480:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "23470:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "23470:6:7"
                          },
                          "nativeSrc": "23470:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "23470:12:7"
                        },
                        "nativeSrc": "23470:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "23470:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "23440:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "23440:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "23448:18:7",
                        "nodeType": "YulLiteral",
                        "src": "23448:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "23437:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "23437:2:7"
                    },
                    "nativeSrc": "23437:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23437:30:7"
                  },
                  "nativeSrc": "23434:50:7",
                  "nodeType": "YulIf",
                  "src": "23434:50:7"
                },
                {
                  "nativeSrc": "23493:25:7",
                  "nodeType": "YulAssignment",
                  "src": "23493:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "23505:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "23505:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "23513:4:7",
                        "nodeType": "YulLiteral",
                        "src": "23513:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "23501:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "23501:3:7"
                    },
                    "nativeSrc": "23501:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23501:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "23493:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "23493:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "23577:16:7",
                    "nodeType": "YulBlock",
                    "src": "23577:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "23586:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23586:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "23589:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23589:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "23579:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "23579:6:7"
                          },
                          "nativeSrc": "23579:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "23579:12:7"
                        },
                        "nativeSrc": "23579:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "23579:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "23534:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "23534:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "23544:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "23544:12:7"
                            },
                            "nativeSrc": "23544:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "23544:14:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "23564:1:7",
                                "nodeType": "YulLiteral",
                                "src": "23564:1:7",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "23567:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "23567:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "23560:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "23560:3:7"
                            },
                            "nativeSrc": "23560:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "23560:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "23540:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "23540:3:7"
                        },
                        "nativeSrc": "23540:35:7",
                        "nodeType": "YulFunctionCall",
                        "src": "23540:35:7"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "23530:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "23530:3:7"
                    },
                    "nativeSrc": "23530:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23530:46:7"
                  },
                  "nativeSrc": "23527:66:7",
                  "nodeType": "YulIf",
                  "src": "23527:66:7"
                }
              ]
            },
            "name": "access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr",
            "nativeSrc": "23054:545:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "23121:8:7",
                "nodeType": "YulTypedName",
                "src": "23121:8:7",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "23131:11:7",
                "nodeType": "YulTypedName",
                "src": "23131:11:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "23147:4:7",
                "nodeType": "YulTypedName",
                "src": "23147:4:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "23153:6:7",
                "nodeType": "YulTypedName",
                "src": "23153:6:7",
                "type": ""
              }
            ],
            "src": "23054:545:7"
          },
          {
            "body": {
              "nativeSrc": "23726:435:7",
              "nodeType": "YulBlock",
              "src": "23726:435:7",
              "statements": [
                {
                  "nativeSrc": "23736:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "23736:51:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "23775:11:7",
                        "nodeType": "YulIdentifier",
                        "src": "23775:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "23762:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "23762:12:7"
                    },
                    "nativeSrc": "23762:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23762:25:7"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "23740:18:7",
                      "nodeType": "YulTypedName",
                      "src": "23740:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "23876:16:7",
                    "nodeType": "YulBlock",
                    "src": "23876:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "23885:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23885:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "23888:1:7",
                              "nodeType": "YulLiteral",
                              "src": "23888:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "23878:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "23878:6:7"
                          },
                          "nativeSrc": "23878:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "23878:12:7"
                        },
                        "nativeSrc": "23878:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "23878:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "23810:18:7",
                            "nodeType": "YulIdentifier",
                            "src": "23810:18:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "23838:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "23838:12:7"
                                    },
                                    "nativeSrc": "23838:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23838:14:7"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "23854:8:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "23854:8:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "23834:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "23834:3:7"
                                },
                                "nativeSrc": "23834:29:7",
                                "nodeType": "YulFunctionCall",
                                "src": "23834:29:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "23869:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "23869:2:7",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "23865:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "23865:3:7"
                                },
                                "nativeSrc": "23865:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "23865:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "23830:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "23830:3:7"
                            },
                            "nativeSrc": "23830:43:7",
                            "nodeType": "YulFunctionCall",
                            "src": "23830:43:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "23806:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "23806:3:7"
                        },
                        "nativeSrc": "23806:68:7",
                        "nodeType": "YulFunctionCall",
                        "src": "23806:68:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "23799:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "23799:6:7"
                    },
                    "nativeSrc": "23799:76:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23799:76:7"
                  },
                  "nativeSrc": "23796:96:7",
                  "nodeType": "YulIf",
                  "src": "23796:96:7"
                },
                {
                  "nativeSrc": "23901:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "23901:47:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "23919:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "23919:8:7"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "23929:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "23929:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "23915:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "23915:3:7"
                    },
                    "nativeSrc": "23915:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23915:33:7"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "23905:6:7",
                      "nodeType": "YulTypedName",
                      "src": "23905:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "23957:30:7",
                  "nodeType": "YulAssignment",
                  "src": "23957:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "23980:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "23980:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "23967:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "23967:12:7"
                    },
                    "nativeSrc": "23967:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23967:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "23957:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "23957:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "24030:16:7",
                    "nodeType": "YulBlock",
                    "src": "24030:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "24039:1:7",
                              "nodeType": "YulLiteral",
                              "src": "24039:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "24042:1:7",
                              "nodeType": "YulLiteral",
                              "src": "24042:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "24032:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "24032:6:7"
                          },
                          "nativeSrc": "24032:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "24032:12:7"
                        },
                        "nativeSrc": "24032:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "24032:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "24002:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "24002:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24010:18:7",
                        "nodeType": "YulLiteral",
                        "src": "24010:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "23999:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "23999:2:7"
                    },
                    "nativeSrc": "23999:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "23999:30:7"
                  },
                  "nativeSrc": "23996:50:7",
                  "nodeType": "YulIf",
                  "src": "23996:50:7"
                },
                {
                  "nativeSrc": "24055:25:7",
                  "nodeType": "YulAssignment",
                  "src": "24055:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "24067:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "24067:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24075:4:7",
                        "nodeType": "YulLiteral",
                        "src": "24075:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "24063:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "24063:3:7"
                    },
                    "nativeSrc": "24063:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24063:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "24055:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "24055:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "24139:16:7",
                    "nodeType": "YulBlock",
                    "src": "24139:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "24148:1:7",
                              "nodeType": "YulLiteral",
                              "src": "24148:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "24151:1:7",
                              "nodeType": "YulLiteral",
                              "src": "24151:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "24141:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "24141:6:7"
                          },
                          "nativeSrc": "24141:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "24141:12:7"
                        },
                        "nativeSrc": "24141:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "24141:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "24096:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "24096:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "24106:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "24106:12:7"
                            },
                            "nativeSrc": "24106:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "24106:14:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "24126:1:7",
                                "nodeType": "YulLiteral",
                                "src": "24126:1:7",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "24129:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "24129:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "24122:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "24122:3:7"
                            },
                            "nativeSrc": "24122:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "24122:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "24102:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "24102:3:7"
                        },
                        "nativeSrc": "24102:35:7",
                        "nodeType": "YulFunctionCall",
                        "src": "24102:35:7"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "24092:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "24092:3:7"
                    },
                    "nativeSrc": "24092:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24092:46:7"
                  },
                  "nativeSrc": "24089:66:7",
                  "nodeType": "YulIf",
                  "src": "24089:66:7"
                }
              ]
            },
            "name": "access_calldata_tail_t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
            "nativeSrc": "23604:557:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "23683:8:7",
                "nodeType": "YulTypedName",
                "src": "23683:8:7",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "23693:11:7",
                "nodeType": "YulTypedName",
                "src": "23693:11:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "23709:4:7",
                "nodeType": "YulTypedName",
                "src": "23709:4:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "23715:6:7",
                "nodeType": "YulTypedName",
                "src": "23715:6:7",
                "type": ""
              }
            ],
            "src": "23604:557:7"
          },
          {
            "body": {
              "nativeSrc": "24349:1046:7",
              "nodeType": "YulBlock",
              "src": "24349:1046:7",
              "statements": [
                {
                  "nativeSrc": "24359:32:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24359:32:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "24377:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "24377:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24388:2:7",
                        "nodeType": "YulLiteral",
                        "src": "24388:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "24373:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "24373:3:7"
                    },
                    "nativeSrc": "24373:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24373:18:7"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "24363:6:7",
                      "nodeType": "YulTypedName",
                      "src": "24363:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "24407:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "24407:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24418:2:7",
                        "nodeType": "YulLiteral",
                        "src": "24418:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "24400:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "24400:6:7"
                    },
                    "nativeSrc": "24400:21:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24400:21:7"
                  },
                  "nativeSrc": "24400:21:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "24400:21:7"
                },
                {
                  "nativeSrc": "24430:17:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24430:17:7",
                  "value": {
                    "name": "tail_1",
                    "nativeSrc": "24441:6:7",
                    "nodeType": "YulIdentifier",
                    "src": "24441:6:7"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nativeSrc": "24434:3:7",
                      "nodeType": "YulTypedName",
                      "src": "24434:3:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nativeSrc": "24463:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "24463:6:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "24471:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "24471:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "24456:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "24456:6:7"
                    },
                    "nativeSrc": "24456:22:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24456:22:7"
                  },
                  "nativeSrc": "24456:22:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "24456:22:7"
                },
                {
                  "nativeSrc": "24487:25:7",
                  "nodeType": "YulAssignment",
                  "src": "24487:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "24498:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "24498:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24509:2:7",
                        "nodeType": "YulLiteral",
                        "src": "24509:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "24494:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "24494:3:7"
                    },
                    "nativeSrc": "24494:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24494:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nativeSrc": "24487:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "24487:3:7"
                    }
                  ]
                },
                {
                  "nativeSrc": "24521:53:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24521:53:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "24543:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "24543:9:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "24558:1:7",
                                "nodeType": "YulLiteral",
                                "src": "24558:1:7",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "value1",
                                "nativeSrc": "24561:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "24561:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "24554:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "24554:3:7"
                            },
                            "nativeSrc": "24554:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "24554:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24539:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "24539:3:7"
                        },
                        "nativeSrc": "24539:30:7",
                        "nodeType": "YulFunctionCall",
                        "src": "24539:30:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24571:2:7",
                        "nodeType": "YulLiteral",
                        "src": "24571:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "24535:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "24535:3:7"
                    },
                    "nativeSrc": "24535:39:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24535:39:7"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nativeSrc": "24525:6:7",
                      "nodeType": "YulTypedName",
                      "src": "24525:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "24583:20:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24583:20:7",
                  "value": {
                    "name": "value0",
                    "nativeSrc": "24597:6:7",
                    "nodeType": "YulIdentifier",
                    "src": "24597:6:7"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nativeSrc": "24587:6:7",
                      "nodeType": "YulTypedName",
                      "src": "24587:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "24612:10:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24612:10:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "24621:1:7",
                    "nodeType": "YulLiteral",
                    "src": "24621:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nativeSrc": "24616:1:7",
                      "nodeType": "YulTypedName",
                      "src": "24616:1:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "24631:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24631:51:7",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "24649:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "24649:12:7"
                            },
                            "nativeSrc": "24649:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "24649:14:7"
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "24665:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "24665:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "24645:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "24645:3:7"
                        },
                        "nativeSrc": "24645:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "24645:27:7"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "24678:2:7",
                            "nodeType": "YulLiteral",
                            "src": "24678:2:7",
                            "type": "",
                            "value": "30"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nativeSrc": "24674:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "24674:3:7"
                        },
                        "nativeSrc": "24674:7:7",
                        "nodeType": "YulFunctionCall",
                        "src": "24674:7:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "24641:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "24641:3:7"
                    },
                    "nativeSrc": "24641:41:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24641:41:7"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "24635:2:7",
                      "nodeType": "YulTypedName",
                      "src": "24635:2:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "24740:626:7",
                    "nodeType": "YulBlock",
                    "src": "24740:626:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nativeSrc": "24761:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "24761:3:7"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "tail_2",
                                      "nativeSrc": "24774:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "24774:6:7"
                                    },
                                    {
                                      "name": "headStart",
                                      "nativeSrc": "24782:9:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "24782:9:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nativeSrc": "24770:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "24770:3:7"
                                  },
                                  "nativeSrc": "24770:22:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "24770:22:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "24798:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "24798:2:7",
                                      "type": "",
                                      "value": "63"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "24794:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "24794:3:7"
                                  },
                                  "nativeSrc": "24794:7:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "24794:7:7"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "24766:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "24766:3:7"
                              },
                              "nativeSrc": "24766:36:7",
                              "nodeType": "YulFunctionCall",
                              "src": "24766:36:7"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "24754:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "24754:6:7"
                          },
                          "nativeSrc": "24754:49:7",
                          "nodeType": "YulFunctionCall",
                          "src": "24754:49:7"
                        },
                        "nativeSrc": "24754:49:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "24754:49:7"
                      },
                      {
                        "nativeSrc": "24816:46:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "24816:46:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nativeSrc": "24855:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "24855:6:7"
                            }
                          ],
                          "functionName": {
                            "name": "calldataload",
                            "nativeSrc": "24842:12:7",
                            "nodeType": "YulIdentifier",
                            "src": "24842:12:7"
                          },
                          "nativeSrc": "24842:20:7",
                          "nodeType": "YulFunctionCall",
                          "src": "24842:20:7"
                        },
                        "variables": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "24820:18:7",
                            "nodeType": "YulTypedName",
                            "src": "24820:18:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "24914:16:7",
                          "nodeType": "YulBlock",
                          "src": "24914:16:7",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "24923:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "24923:1:7",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "24926:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "24926:1:7",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "24916:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "24916:6:7"
                                },
                                "nativeSrc": "24916:12:7",
                                "nodeType": "YulFunctionCall",
                                "src": "24916:12:7"
                              },
                              "nativeSrc": "24916:12:7",
                              "nodeType": "YulExpressionStatement",
                              "src": "24916:12:7"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nativeSrc": "24889:18:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "24889:18:7"
                                },
                                {
                                  "name": "_1",
                                  "nativeSrc": "24909:2:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "24909:2:7"
                                }
                              ],
                              "functionName": {
                                "name": "slt",
                                "nativeSrc": "24885:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "24885:3:7"
                              },
                              "nativeSrc": "24885:27:7",
                              "nodeType": "YulFunctionCall",
                              "src": "24885:27:7"
                            }
                          ],
                          "functionName": {
                            "name": "iszero",
                            "nativeSrc": "24878:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "24878:6:7"
                          },
                          "nativeSrc": "24878:35:7",
                          "nodeType": "YulFunctionCall",
                          "src": "24878:35:7"
                        },
                        "nativeSrc": "24875:55:7",
                        "nodeType": "YulIf",
                        "src": "24875:55:7"
                      },
                      {
                        "nativeSrc": "24943:44:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "24943:44:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "rel_offset_of_tail",
                              "nativeSrc": "24960:18:7",
                              "nodeType": "YulIdentifier",
                              "src": "24960:18:7"
                            },
                            {
                              "name": "value0",
                              "nativeSrc": "24980:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "24980:6:7"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "24956:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "24956:3:7"
                          },
                          "nativeSrc": "24956:31:7",
                          "nodeType": "YulFunctionCall",
                          "src": "24956:31:7"
                        },
                        "variables": [
                          {
                            "name": "value",
                            "nativeSrc": "24947:5:7",
                            "nodeType": "YulTypedName",
                            "src": "24947:5:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25000:33:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "25000:33:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "value",
                              "nativeSrc": "25027:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "25027:5:7"
                            }
                          ],
                          "functionName": {
                            "name": "calldataload",
                            "nativeSrc": "25014:12:7",
                            "nodeType": "YulIdentifier",
                            "src": "25014:12:7"
                          },
                          "nativeSrc": "25014:19:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25014:19:7"
                        },
                        "variables": [
                          {
                            "name": "length",
                            "nativeSrc": "25004:6:7",
                            "nodeType": "YulTypedName",
                            "src": "25004:6:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25046:29:7",
                        "nodeType": "YulVariableDeclaration",
                        "src": "25046:29:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "value",
                              "nativeSrc": "25065:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "25065:5:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25072:2:7",
                              "nodeType": "YulLiteral",
                              "src": "25072:2:7",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "25061:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "25061:3:7"
                          },
                          "nativeSrc": "25061:14:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25061:14:7"
                        },
                        "variables": [
                          {
                            "name": "value_1",
                            "nativeSrc": "25050:7:7",
                            "nodeType": "YulTypedName",
                            "src": "25050:7:7",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "25122:16:7",
                          "nodeType": "YulBlock",
                          "src": "25122:16:7",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "25131:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "25131:1:7",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "25134:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "25134:1:7",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "25124:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "25124:6:7"
                                },
                                "nativeSrc": "25124:12:7",
                                "nodeType": "YulFunctionCall",
                                "src": "25124:12:7"
                              },
                              "nativeSrc": "25124:12:7",
                              "nodeType": "YulExpressionStatement",
                              "src": "25124:12:7"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "length",
                              "nativeSrc": "25094:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "25094:6:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25102:18:7",
                              "nodeType": "YulLiteral",
                              "src": "25102:18:7",
                              "type": "",
                              "value": "0xffffffffffffffff"
                            }
                          ],
                          "functionName": {
                            "name": "gt",
                            "nativeSrc": "25091:2:7",
                            "nodeType": "YulIdentifier",
                            "src": "25091:2:7"
                          },
                          "nativeSrc": "25091:30:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25091:30:7"
                        },
                        "nativeSrc": "25088:50:7",
                        "nodeType": "YulIf",
                        "src": "25088:50:7"
                      },
                      {
                        "body": {
                          "nativeSrc": "25196:16:7",
                          "nodeType": "YulBlock",
                          "src": "25196:16:7",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "25205:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "25205:1:7",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "25208:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "25208:1:7",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "25198:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "25198:6:7"
                                },
                                "nativeSrc": "25198:12:7",
                                "nodeType": "YulFunctionCall",
                                "src": "25198:12:7"
                              },
                              "nativeSrc": "25198:12:7",
                              "nodeType": "YulExpressionStatement",
                              "src": "25198:12:7"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "value_1",
                              "nativeSrc": "25158:7:7",
                              "nodeType": "YulIdentifier",
                              "src": "25158:7:7"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "functionName": {
                                    "name": "calldatasize",
                                    "nativeSrc": "25171:12:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "25171:12:7"
                                  },
                                  "nativeSrc": "25171:14:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "25171:14:7"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "25187:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "25187:6:7"
                                }
                              ],
                              "functionName": {
                                "name": "sub",
                                "nativeSrc": "25167:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "25167:3:7"
                              },
                              "nativeSrc": "25167:27:7",
                              "nodeType": "YulFunctionCall",
                              "src": "25167:27:7"
                            }
                          ],
                          "functionName": {
                            "name": "sgt",
                            "nativeSrc": "25154:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "25154:3:7"
                          },
                          "nativeSrc": "25154:41:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25154:41:7"
                        },
                        "nativeSrc": "25151:61:7",
                        "nodeType": "YulIf",
                        "src": "25151:61:7"
                      },
                      {
                        "nativeSrc": "25225:61:7",
                        "nodeType": "YulAssignment",
                        "src": "25225:61:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "value_1",
                              "nativeSrc": "25262:7:7",
                              "nodeType": "YulIdentifier",
                              "src": "25262:7:7"
                            },
                            {
                              "name": "length",
                              "nativeSrc": "25271:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "25271:6:7"
                            },
                            {
                              "name": "tail_2",
                              "nativeSrc": "25279:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "25279:6:7"
                            }
                          ],
                          "functionName": {
                            "name": "abi_encode_string_calldata",
                            "nativeSrc": "25235:26:7",
                            "nodeType": "YulIdentifier",
                            "src": "25235:26:7"
                          },
                          "nativeSrc": "25235:51:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25235:51:7"
                        },
                        "variableNames": [
                          {
                            "name": "tail_2",
                            "nativeSrc": "25225:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "25225:6:7"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25299:25:7",
                        "nodeType": "YulAssignment",
                        "src": "25299:25:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nativeSrc": "25313:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "25313:6:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25321:2:7",
                              "nodeType": "YulLiteral",
                              "src": "25321:2:7",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "25309:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "25309:3:7"
                          },
                          "nativeSrc": "25309:15:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25309:15:7"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nativeSrc": "25299:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "25299:6:7"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "25337:19:7",
                        "nodeType": "YulAssignment",
                        "src": "25337:19:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nativeSrc": "25348:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "25348:3:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25353:2:7",
                              "nodeType": "YulLiteral",
                              "src": "25353:2:7",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "25344:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "25344:3:7"
                          },
                          "nativeSrc": "25344:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25344:12:7"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nativeSrc": "25337:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "25337:3:7"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nativeSrc": "24702:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "24702:1:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "24705:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "24705:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "24699:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "24699:2:7"
                    },
                    "nativeSrc": "24699:13:7",
                    "nodeType": "YulFunctionCall",
                    "src": "24699:13:7"
                  },
                  "nativeSrc": "24691:675:7",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "24713:18:7",
                    "nodeType": "YulBlock",
                    "src": "24713:18:7",
                    "statements": [
                      {
                        "nativeSrc": "24715:14:7",
                        "nodeType": "YulAssignment",
                        "src": "24715:14:7",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nativeSrc": "24724:1:7",
                              "nodeType": "YulIdentifier",
                              "src": "24724:1:7"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "24727:1:7",
                              "nodeType": "YulLiteral",
                              "src": "24727:1:7",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "24720:3:7",
                            "nodeType": "YulIdentifier",
                            "src": "24720:3:7"
                          },
                          "nativeSrc": "24720:9:7",
                          "nodeType": "YulFunctionCall",
                          "src": "24720:9:7"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nativeSrc": "24715:1:7",
                            "nodeType": "YulIdentifier",
                            "src": "24715:1:7"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nativeSrc": "24695:3:7",
                    "nodeType": "YulBlock",
                    "src": "24695:3:7",
                    "statements": []
                  },
                  "src": "24691:675:7"
                },
                {
                  "nativeSrc": "25375:14:7",
                  "nodeType": "YulAssignment",
                  "src": "25375:14:7",
                  "value": {
                    "name": "tail_2",
                    "nativeSrc": "25383:6:7",
                    "nodeType": "YulIdentifier",
                    "src": "25383:6:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "25375:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "25375:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_string_calldata_ptr_$dyn_calldata_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
            "nativeSrc": "24166:1229:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "24310:9:7",
                "nodeType": "YulTypedName",
                "src": "24310:9:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "24321:6:7",
                "nodeType": "YulTypedName",
                "src": "24321:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "24329:6:7",
                "nodeType": "YulTypedName",
                "src": "24329:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "24340:4:7",
                "nodeType": "YulTypedName",
                "src": "24340:4:7",
                "type": ""
              }
            ],
            "src": "24166:1229:7"
          },
          {
            "body": {
              "nativeSrc": "25470:236:7",
              "nodeType": "YulBlock",
              "src": "25470:236:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "25516:16:7",
                    "nodeType": "YulBlock",
                    "src": "25516:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "25525:1:7",
                              "nodeType": "YulLiteral",
                              "src": "25525:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25528:1:7",
                              "nodeType": "YulLiteral",
                              "src": "25528:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "25518:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "25518:6:7"
                          },
                          "nativeSrc": "25518:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25518:12:7"
                        },
                        "nativeSrc": "25518:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "25518:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "25491:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "25491:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "25500:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "25500:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "25487:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "25487:3:7"
                        },
                        "nativeSrc": "25487:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "25487:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "25512:2:7",
                        "nodeType": "YulLiteral",
                        "src": "25512:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "25483:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "25483:3:7"
                    },
                    "nativeSrc": "25483:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "25483:32:7"
                  },
                  "nativeSrc": "25480:52:7",
                  "nodeType": "YulIf",
                  "src": "25480:52:7"
                },
                {
                  "nativeSrc": "25541:36:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "25541:36:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "25567:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "25567:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "25554:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "25554:12:7"
                    },
                    "nativeSrc": "25554:23:7",
                    "nodeType": "YulFunctionCall",
                    "src": "25554:23:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "25545:5:7",
                      "nodeType": "YulTypedName",
                      "src": "25545:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "25660:16:7",
                    "nodeType": "YulBlock",
                    "src": "25660:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "25669:1:7",
                              "nodeType": "YulLiteral",
                              "src": "25669:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25672:1:7",
                              "nodeType": "YulLiteral",
                              "src": "25672:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "25662:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "25662:6:7"
                          },
                          "nativeSrc": "25662:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "25662:12:7"
                        },
                        "nativeSrc": "25662:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "25662:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "25599:5:7",
                            "nodeType": "YulIdentifier",
                            "src": "25599:5:7"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "25610:5:7",
                                "nodeType": "YulIdentifier",
                                "src": "25610:5:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "25621:34:7",
                                    "nodeType": "YulLiteral",
                                    "src": "25621:34:7",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "25617:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "25617:3:7"
                                },
                                "nativeSrc": "25617:39:7",
                                "nodeType": "YulFunctionCall",
                                "src": "25617:39:7"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "25606:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "25606:3:7"
                            },
                            "nativeSrc": "25606:51:7",
                            "nodeType": "YulFunctionCall",
                            "src": "25606:51:7"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "25596:2:7",
                          "nodeType": "YulIdentifier",
                          "src": "25596:2:7"
                        },
                        "nativeSrc": "25596:62:7",
                        "nodeType": "YulFunctionCall",
                        "src": "25596:62:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "25589:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "25589:6:7"
                    },
                    "nativeSrc": "25589:70:7",
                    "nodeType": "YulFunctionCall",
                    "src": "25589:70:7"
                  },
                  "nativeSrc": "25586:90:7",
                  "nodeType": "YulIf",
                  "src": "25586:90:7"
                },
                {
                  "nativeSrc": "25685:15:7",
                  "nodeType": "YulAssignment",
                  "src": "25685:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "25695:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "25695:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "25685:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "25685:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes16",
            "nativeSrc": "25400:306:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "25436:9:7",
                "nodeType": "YulTypedName",
                "src": "25436:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "25447:7:7",
                "nodeType": "YulTypedName",
                "src": "25447:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "25459:6:7",
                "nodeType": "YulTypedName",
                "src": "25459:6:7",
                "type": ""
              }
            ],
            "src": "25400:306:7"
          },
          {
            "body": {
              "nativeSrc": "25924:348:7",
              "nodeType": "YulBlock",
              "src": "25924:348:7",
              "statements": [
                {
                  "nativeSrc": "25934:27:7",
                  "nodeType": "YulAssignment",
                  "src": "25934:27:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "25946:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "25946:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "25957:3:7",
                        "nodeType": "YulLiteral",
                        "src": "25957:3:7",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "25942:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "25942:3:7"
                    },
                    "nativeSrc": "25942:19:7",
                    "nodeType": "YulFunctionCall",
                    "src": "25942:19:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "25934:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "25934:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "25977:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "25977:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "25992:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "25992:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "26008:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "26008:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "26013:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "26013:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "26004:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "26004:3:7"
                                },
                                "nativeSrc": "26004:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "26004:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "26017:1:7",
                                "nodeType": "YulLiteral",
                                "src": "26017:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "26000:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "26000:3:7"
                            },
                            "nativeSrc": "26000:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "26000:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "25988:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "25988:3:7"
                        },
                        "nativeSrc": "25988:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "25988:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "25970:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "25970:6:7"
                    },
                    "nativeSrc": "25970:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "25970:51:7"
                  },
                  "nativeSrc": "25970:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "25970:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26041:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "26041:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26052:2:7",
                            "nodeType": "YulLiteral",
                            "src": "26052:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26037:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26037:3:7"
                        },
                        "nativeSrc": "26037:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26037:18:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "26057:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "26057:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26030:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26030:6:7"
                    },
                    "nativeSrc": "26030:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26030:34:7"
                  },
                  "nativeSrc": "26030:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "26030:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26084:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "26084:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26095:2:7",
                            "nodeType": "YulLiteral",
                            "src": "26095:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26080:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26080:3:7"
                        },
                        "nativeSrc": "26080:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26080:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "26104:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "26104:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "26120:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "26120:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "26125:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "26125:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "26116:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "26116:3:7"
                                },
                                "nativeSrc": "26116:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "26116:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "26129:1:7",
                                "nodeType": "YulLiteral",
                                "src": "26129:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "26112:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "26112:3:7"
                            },
                            "nativeSrc": "26112:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "26112:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "26100:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26100:3:7"
                        },
                        "nativeSrc": "26100:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26100:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26073:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26073:6:7"
                    },
                    "nativeSrc": "26073:60:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26073:60:7"
                  },
                  "nativeSrc": "26073:60:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "26073:60:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26153:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "26153:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26164:2:7",
                            "nodeType": "YulLiteral",
                            "src": "26164:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26149:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26149:3:7"
                        },
                        "nativeSrc": "26149:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26149:18:7"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "26169:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "26169:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26142:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26142:6:7"
                    },
                    "nativeSrc": "26142:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26142:34:7"
                  },
                  "nativeSrc": "26142:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "26142:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26196:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "26196:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26207:3:7",
                            "nodeType": "YulLiteral",
                            "src": "26207:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26192:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26192:3:7"
                        },
                        "nativeSrc": "26192:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26192:19:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value4",
                            "nativeSrc": "26217:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "26217:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "26229:34:7",
                                "nodeType": "YulLiteral",
                                "src": "26229:34:7",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "26225:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "26225:3:7"
                            },
                            "nativeSrc": "26225:39:7",
                            "nodeType": "YulFunctionCall",
                            "src": "26225:39:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "26213:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26213:3:7"
                        },
                        "nativeSrc": "26213:52:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26213:52:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26185:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26185:6:7"
                    },
                    "nativeSrc": "26185:81:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26185:81:7"
                  },
                  "nativeSrc": "26185:81:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "26185:81:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256_t_address_t_uint256_t_bytes16__to_t_address_t_uint256_t_address_t_uint256_t_bytes16__fromStack_reversed",
            "nativeSrc": "25711:561:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "25861:9:7",
                "nodeType": "YulTypedName",
                "src": "25861:9:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "25872:6:7",
                "nodeType": "YulTypedName",
                "src": "25872:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "25880:6:7",
                "nodeType": "YulTypedName",
                "src": "25880:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "25888:6:7",
                "nodeType": "YulTypedName",
                "src": "25888:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "25896:6:7",
                "nodeType": "YulTypedName",
                "src": "25896:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "25904:6:7",
                "nodeType": "YulTypedName",
                "src": "25904:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "25915:4:7",
                "nodeType": "YulTypedName",
                "src": "25915:4:7",
                "type": ""
              }
            ],
            "src": "25711:561:7"
          },
          {
            "body": {
              "nativeSrc": "26406:119:7",
              "nodeType": "YulBlock",
              "src": "26406:119:7",
              "statements": [
                {
                  "nativeSrc": "26416:26:7",
                  "nodeType": "YulAssignment",
                  "src": "26416:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "26428:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "26428:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26439:2:7",
                        "nodeType": "YulLiteral",
                        "src": "26439:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "26424:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "26424:3:7"
                    },
                    "nativeSrc": "26424:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26424:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "26416:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "26416:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "26458:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "26458:9:7"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "26469:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "26469:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26451:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26451:6:7"
                    },
                    "nativeSrc": "26451:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26451:25:7"
                  },
                  "nativeSrc": "26451:25:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "26451:25:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26496:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "26496:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26507:2:7",
                            "nodeType": "YulLiteral",
                            "src": "26507:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26492:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26492:3:7"
                        },
                        "nativeSrc": "26492:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26492:18:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "26512:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "26512:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26485:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26485:6:7"
                    },
                    "nativeSrc": "26485:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26485:34:7"
                  },
                  "nativeSrc": "26485:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "26485:34:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nativeSrc": "26277:248:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "26367:9:7",
                "nodeType": "YulTypedName",
                "src": "26367:9:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "26378:6:7",
                "nodeType": "YulTypedName",
                "src": "26378:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "26386:6:7",
                "nodeType": "YulTypedName",
                "src": "26386:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "26397:4:7",
                "nodeType": "YulTypedName",
                "src": "26397:4:7",
                "type": ""
              }
            ],
            "src": "26277:248:7"
          },
          {
            "body": {
              "nativeSrc": "26640:435:7",
              "nodeType": "YulBlock",
              "src": "26640:435:7",
              "statements": [
                {
                  "nativeSrc": "26650:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "26650:51:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "26689:11:7",
                        "nodeType": "YulIdentifier",
                        "src": "26689:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "26676:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "26676:12:7"
                    },
                    "nativeSrc": "26676:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26676:25:7"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "26654:18:7",
                      "nodeType": "YulTypedName",
                      "src": "26654:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "26790:16:7",
                    "nodeType": "YulBlock",
                    "src": "26790:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "26799:1:7",
                              "nodeType": "YulLiteral",
                              "src": "26799:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "26802:1:7",
                              "nodeType": "YulLiteral",
                              "src": "26802:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "26792:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "26792:6:7"
                          },
                          "nativeSrc": "26792:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "26792:12:7"
                        },
                        "nativeSrc": "26792:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "26792:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "26724:18:7",
                            "nodeType": "YulIdentifier",
                            "src": "26724:18:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "26752:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "26752:12:7"
                                    },
                                    "nativeSrc": "26752:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "26752:14:7"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "26768:8:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "26768:8:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "26748:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "26748:3:7"
                                },
                                "nativeSrc": "26748:29:7",
                                "nodeType": "YulFunctionCall",
                                "src": "26748:29:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "26783:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "26783:2:7",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "26779:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "26779:3:7"
                                },
                                "nativeSrc": "26779:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "26779:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "26744:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "26744:3:7"
                            },
                            "nativeSrc": "26744:43:7",
                            "nodeType": "YulFunctionCall",
                            "src": "26744:43:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "26720:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "26720:3:7"
                        },
                        "nativeSrc": "26720:68:7",
                        "nodeType": "YulFunctionCall",
                        "src": "26720:68:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "26713:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26713:6:7"
                    },
                    "nativeSrc": "26713:76:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26713:76:7"
                  },
                  "nativeSrc": "26710:96:7",
                  "nodeType": "YulIf",
                  "src": "26710:96:7"
                },
                {
                  "nativeSrc": "26815:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "26815:47:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "26833:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "26833:8:7"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "26843:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "26843:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "26829:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "26829:3:7"
                    },
                    "nativeSrc": "26829:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26829:33:7"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "26819:6:7",
                      "nodeType": "YulTypedName",
                      "src": "26819:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "26871:30:7",
                  "nodeType": "YulAssignment",
                  "src": "26871:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "26894:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "26894:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "26881:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "26881:12:7"
                    },
                    "nativeSrc": "26881:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26881:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "26871:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "26871:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "26944:16:7",
                    "nodeType": "YulBlock",
                    "src": "26944:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "26953:1:7",
                              "nodeType": "YulLiteral",
                              "src": "26953:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "26956:1:7",
                              "nodeType": "YulLiteral",
                              "src": "26956:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "26946:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "26946:6:7"
                          },
                          "nativeSrc": "26946:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "26946:12:7"
                        },
                        "nativeSrc": "26946:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "26946:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "26916:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "26916:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26924:18:7",
                        "nodeType": "YulLiteral",
                        "src": "26924:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "26913:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "26913:2:7"
                    },
                    "nativeSrc": "26913:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26913:30:7"
                  },
                  "nativeSrc": "26910:50:7",
                  "nodeType": "YulIf",
                  "src": "26910:50:7"
                },
                {
                  "nativeSrc": "26969:25:7",
                  "nodeType": "YulAssignment",
                  "src": "26969:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "26981:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "26981:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26989:4:7",
                        "nodeType": "YulLiteral",
                        "src": "26989:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "26977:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "26977:3:7"
                    },
                    "nativeSrc": "26977:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "26977:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "26969:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "26969:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "27053:16:7",
                    "nodeType": "YulBlock",
                    "src": "27053:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "27062:1:7",
                              "nodeType": "YulLiteral",
                              "src": "27062:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "27065:1:7",
                              "nodeType": "YulLiteral",
                              "src": "27065:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "27055:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "27055:6:7"
                          },
                          "nativeSrc": "27055:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "27055:12:7"
                        },
                        "nativeSrc": "27055:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "27055:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "27010:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "27010:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "27020:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "27020:12:7"
                            },
                            "nativeSrc": "27020:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "27020:14:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "27040:1:7",
                                "nodeType": "YulLiteral",
                                "src": "27040:1:7",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "27043:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "27043:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "27036:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "27036:3:7"
                            },
                            "nativeSrc": "27036:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "27036:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "27016:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "27016:3:7"
                        },
                        "nativeSrc": "27016:35:7",
                        "nodeType": "YulFunctionCall",
                        "src": "27016:35:7"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "27006:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "27006:3:7"
                    },
                    "nativeSrc": "27006:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27006:46:7"
                  },
                  "nativeSrc": "27003:66:7",
                  "nodeType": "YulIf",
                  "src": "27003:66:7"
                }
              ]
            },
            "name": "access_calldata_tail_t_array$_t_address_$dyn_calldata_ptr",
            "nativeSrc": "26530:545:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "26597:8:7",
                "nodeType": "YulTypedName",
                "src": "26597:8:7",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "26607:11:7",
                "nodeType": "YulTypedName",
                "src": "26607:11:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "26623:4:7",
                "nodeType": "YulTypedName",
                "src": "26623:4:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "26629:6:7",
                "nodeType": "YulTypedName",
                "src": "26629:6:7",
                "type": ""
              }
            ],
            "src": "26530:545:7"
          },
          {
            "body": {
              "nativeSrc": "27112:95:7",
              "nodeType": "YulBlock",
              "src": "27112:95:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "27129:1:7",
                        "nodeType": "YulLiteral",
                        "src": "27129:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "27136:3:7",
                            "nodeType": "YulLiteral",
                            "src": "27136:3:7",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27141:10:7",
                            "nodeType": "YulLiteral",
                            "src": "27141:10:7",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "27132:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "27132:3:7"
                        },
                        "nativeSrc": "27132:20:7",
                        "nodeType": "YulFunctionCall",
                        "src": "27132:20:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27122:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "27122:6:7"
                    },
                    "nativeSrc": "27122:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27122:31:7"
                  },
                  "nativeSrc": "27122:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "27122:31:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "27169:1:7",
                        "nodeType": "YulLiteral",
                        "src": "27169:1:7",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27172:4:7",
                        "nodeType": "YulLiteral",
                        "src": "27172:4:7",
                        "type": "",
                        "value": "0x21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27162:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "27162:6:7"
                    },
                    "nativeSrc": "27162:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27162:15:7"
                  },
                  "nativeSrc": "27162:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "27162:15:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "27193:1:7",
                        "nodeType": "YulLiteral",
                        "src": "27193:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27196:4:7",
                        "nodeType": "YulLiteral",
                        "src": "27196:4:7",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "27186:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "27186:6:7"
                    },
                    "nativeSrc": "27186:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27186:15:7"
                  },
                  "nativeSrc": "27186:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "27186:15:7"
                }
              ]
            },
            "name": "panic_error_0x21",
            "nativeSrc": "27080:127:7",
            "nodeType": "YulFunctionDefinition",
            "src": "27080:127:7"
          },
          {
            "body": {
              "nativeSrc": "27306:1203:7",
              "nodeType": "YulBlock",
              "src": "27306:1203:7",
              "statements": [
                {
                  "nativeSrc": "27316:24:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "27316:24:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nativeSrc": "27336:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "27336:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "27330:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "27330:5:7"
                    },
                    "nativeSrc": "27330:10:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27330:10:7"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nativeSrc": "27320:6:7",
                      "nodeType": "YulTypedName",
                      "src": "27320:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "27383:22:7",
                    "nodeType": "YulBlock",
                    "src": "27383:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "27385:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "27385:16:7"
                          },
                          "nativeSrc": "27385:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "27385:18:7"
                        },
                        "nativeSrc": "27385:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "27385:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nativeSrc": "27355:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "27355:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27363:18:7",
                        "nodeType": "YulLiteral",
                        "src": "27363:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "27352:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "27352:2:7"
                    },
                    "nativeSrc": "27352:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27352:30:7"
                  },
                  "nativeSrc": "27349:56:7",
                  "nodeType": "YulIf",
                  "src": "27349:56:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "27458:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "27458:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nativeSrc": "27496:4:7",
                                "nodeType": "YulIdentifier",
                                "src": "27496:4:7"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nativeSrc": "27490:5:7",
                              "nodeType": "YulIdentifier",
                              "src": "27490:5:7"
                            },
                            "nativeSrc": "27490:11:7",
                            "nodeType": "YulFunctionCall",
                            "src": "27490:11:7"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nativeSrc": "27464:25:7",
                          "nodeType": "YulIdentifier",
                          "src": "27464:25:7"
                        },
                        "nativeSrc": "27464:38:7",
                        "nodeType": "YulFunctionCall",
                        "src": "27464:38:7"
                      },
                      {
                        "name": "newLen",
                        "nativeSrc": "27504:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "27504:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nativeSrc": "27414:43:7",
                      "nodeType": "YulIdentifier",
                      "src": "27414:43:7"
                    },
                    "nativeSrc": "27414:97:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27414:97:7"
                  },
                  "nativeSrc": "27414:97:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "27414:97:7"
                },
                {
                  "nativeSrc": "27520:18:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "27520:18:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "27537:1:7",
                    "nodeType": "YulLiteral",
                    "src": "27537:1:7",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "27524:9:7",
                      "nodeType": "YulTypedName",
                      "src": "27524:9:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "27547:17:7",
                  "nodeType": "YulAssignment",
                  "src": "27547:17:7",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "27560:4:7",
                    "nodeType": "YulLiteral",
                    "src": "27560:4:7",
                    "type": "",
                    "value": "0x20"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "27547:9:7",
                      "nodeType": "YulIdentifier",
                      "src": "27547:9:7"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "27610:642:7",
                        "nodeType": "YulBlock",
                        "src": "27610:642:7",
                        "statements": [
                          {
                            "nativeSrc": "27624:35:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "27624:35:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nativeSrc": "27643:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "27643:6:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "27655:2:7",
                                      "nodeType": "YulLiteral",
                                      "src": "27655:2:7",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "27651:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "27651:3:7"
                                  },
                                  "nativeSrc": "27651:7:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "27651:7:7"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "27639:3:7",
                                "nodeType": "YulIdentifier",
                                "src": "27639:3:7"
                              },
                              "nativeSrc": "27639:20:7",
                              "nodeType": "YulFunctionCall",
                              "src": "27639:20:7"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nativeSrc": "27628:7:7",
                                "nodeType": "YulTypedName",
                                "src": "27628:7:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "27672:49:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "27672:49:7",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "27716:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "27716:4:7"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nativeSrc": "27686:29:7",
                                "nodeType": "YulIdentifier",
                                "src": "27686:29:7"
                              },
                              "nativeSrc": "27686:35:7",
                              "nodeType": "YulFunctionCall",
                              "src": "27686:35:7"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nativeSrc": "27676:6:7",
                                "nodeType": "YulTypedName",
                                "src": "27676:6:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "27734:10:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "27734:10:7",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "27743:1:7",
                              "nodeType": "YulLiteral",
                              "src": "27743:1:7",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "27738:1:7",
                                "nodeType": "YulTypedName",
                                "src": "27738:1:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "27814:165:7",
                              "nodeType": "YulBlock",
                              "src": "27814:165:7",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "27839:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "27839:6:7"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nativeSrc": "27857:3:7",
                                                "nodeType": "YulIdentifier",
                                                "src": "27857:3:7"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nativeSrc": "27862:9:7",
                                                "nodeType": "YulIdentifier",
                                                "src": "27862:9:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "27853:3:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "27853:3:7"
                                            },
                                            "nativeSrc": "27853:19:7",
                                            "nodeType": "YulFunctionCall",
                                            "src": "27853:19:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "27847:5:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "27847:5:7"
                                        },
                                        "nativeSrc": "27847:26:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "27847:26:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "27832:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "27832:6:7"
                                    },
                                    "nativeSrc": "27832:42:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "27832:42:7"
                                  },
                                  "nativeSrc": "27832:42:7",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "27832:42:7"
                                },
                                {
                                  "nativeSrc": "27891:24:7",
                                  "nodeType": "YulAssignment",
                                  "src": "27891:24:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "27905:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "27905:6:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "27913:1:7",
                                        "nodeType": "YulLiteral",
                                        "src": "27913:1:7",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "27901:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "27901:3:7"
                                    },
                                    "nativeSrc": "27901:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "27901:14:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nativeSrc": "27891:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "27891:6:7"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "27932:33:7",
                                  "nodeType": "YulAssignment",
                                  "src": "27932:33:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nativeSrc": "27949:9:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "27949:9:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "27960:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "27960:4:7",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "27945:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "27945:3:7"
                                    },
                                    "nativeSrc": "27945:20:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "27945:20:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nativeSrc": "27932:9:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "27932:9:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "27768:1:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "27768:1:7"
                                },
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "27771:7:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "27771:7:7"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "27765:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "27765:2:7"
                              },
                              "nativeSrc": "27765:14:7",
                              "nodeType": "YulFunctionCall",
                              "src": "27765:14:7"
                            },
                            "nativeSrc": "27757:222:7",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "27780:21:7",
                              "nodeType": "YulBlock",
                              "src": "27780:21:7",
                              "statements": [
                                {
                                  "nativeSrc": "27782:17:7",
                                  "nodeType": "YulAssignment",
                                  "src": "27782:17:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "27791:1:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "27791:1:7"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "27794:4:7",
                                        "nodeType": "YulLiteral",
                                        "src": "27794:4:7",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "27787:3:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "27787:3:7"
                                    },
                                    "nativeSrc": "27787:12:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "27787:12:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "27782:1:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "27782:1:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "27761:3:7",
                              "nodeType": "YulBlock",
                              "src": "27761:3:7",
                              "statements": []
                            },
                            "src": "27757:222:7"
                          },
                          {
                            "body": {
                              "nativeSrc": "28027:166:7",
                              "nodeType": "YulBlock",
                              "src": "28027:166:7",
                              "statements": [
                                {
                                  "nativeSrc": "28045:43:7",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "28045:43:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "28072:3:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "28072:3:7"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "28077:9:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "28077:9:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "28068:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "28068:3:7"
                                        },
                                        "nativeSrc": "28068:19:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "28068:19:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "28062:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "28062:5:7"
                                    },
                                    "nativeSrc": "28062:26:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "28062:26:7"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nativeSrc": "28049:9:7",
                                      "nodeType": "YulTypedName",
                                      "src": "28049:9:7",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "28112:6:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "28112:6:7"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nativeSrc": "28124:9:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "28124:9:7"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "28151:1:7",
                                                            "nodeType": "YulLiteral",
                                                            "src": "28151:1:7",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nativeSrc": "28154:6:7",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "28154:6:7"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nativeSrc": "28147:3:7",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "28147:3:7"
                                                        },
                                                        "nativeSrc": "28147:14:7",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "28147:14:7"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "28163:3:7",
                                                        "nodeType": "YulLiteral",
                                                        "src": "28163:3:7",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nativeSrc": "28143:3:7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "28143:3:7"
                                                    },
                                                    "nativeSrc": "28143:24:7",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "28143:24:7"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "28173:1:7",
                                                        "nodeType": "YulLiteral",
                                                        "src": "28173:1:7",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nativeSrc": "28169:3:7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "28169:3:7"
                                                    },
                                                    "nativeSrc": "28169:6:7",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "28169:6:7"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nativeSrc": "28139:3:7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "28139:3:7"
                                                },
                                                "nativeSrc": "28139:37:7",
                                                "nodeType": "YulFunctionCall",
                                                "src": "28139:37:7"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nativeSrc": "28135:3:7",
                                              "nodeType": "YulIdentifier",
                                              "src": "28135:3:7"
                                            },
                                            "nativeSrc": "28135:42:7",
                                            "nodeType": "YulFunctionCall",
                                            "src": "28135:42:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nativeSrc": "28120:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "28120:3:7"
                                        },
                                        "nativeSrc": "28120:58:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "28120:58:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "28105:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "28105:6:7"
                                    },
                                    "nativeSrc": "28105:74:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "28105:74:7"
                                  },
                                  "nativeSrc": "28105:74:7",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "28105:74:7"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "27998:7:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "27998:7:7"
                                },
                                {
                                  "name": "newLen",
                                  "nativeSrc": "28007:6:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "28007:6:7"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "27995:2:7",
                                "nodeType": "YulIdentifier",
                                "src": "27995:2:7"
                              },
                              "nativeSrc": "27995:19:7",
                              "nodeType": "YulFunctionCall",
                              "src": "27995:19:7"
                            },
                            "nativeSrc": "27992:201:7",
                            "nodeType": "YulIf",
                            "src": "27992:201:7"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "28213:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "28213:4:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "28227:1:7",
                                          "nodeType": "YulLiteral",
                                          "src": "28227:1:7",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nativeSrc": "28230:6:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "28230:6:7"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "28223:3:7",
                                        "nodeType": "YulIdentifier",
                                        "src": "28223:3:7"
                                      },
                                      "nativeSrc": "28223:14:7",
                                      "nodeType": "YulFunctionCall",
                                      "src": "28223:14:7"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "28239:1:7",
                                      "nodeType": "YulLiteral",
                                      "src": "28239:1:7",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "28219:3:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "28219:3:7"
                                  },
                                  "nativeSrc": "28219:22:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "28219:22:7"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "28206:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "28206:6:7"
                              },
                              "nativeSrc": "28206:36:7",
                              "nodeType": "YulFunctionCall",
                              "src": "28206:36:7"
                            },
                            "nativeSrc": "28206:36:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "28206:36:7"
                          }
                        ]
                      },
                      "nativeSrc": "27603:649:7",
                      "nodeType": "YulCase",
                      "src": "27603:649:7",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "27608:1:7",
                        "nodeType": "YulLiteral",
                        "src": "27608:1:7",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "28269:234:7",
                        "nodeType": "YulBlock",
                        "src": "28269:234:7",
                        "statements": [
                          {
                            "nativeSrc": "28283:14:7",
                            "nodeType": "YulVariableDeclaration",
                            "src": "28283:14:7",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "28296:1:7",
                              "nodeType": "YulLiteral",
                              "src": "28296:1:7",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nativeSrc": "28287:5:7",
                                "nodeType": "YulTypedName",
                                "src": "28287:5:7",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "28332:67:7",
                              "nodeType": "YulBlock",
                              "src": "28332:67:7",
                              "statements": [
                                {
                                  "nativeSrc": "28350:35:7",
                                  "nodeType": "YulAssignment",
                                  "src": "28350:35:7",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "28369:3:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "28369:3:7"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "28374:9:7",
                                            "nodeType": "YulIdentifier",
                                            "src": "28374:9:7"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "28365:3:7",
                                          "nodeType": "YulIdentifier",
                                          "src": "28365:3:7"
                                        },
                                        "nativeSrc": "28365:19:7",
                                        "nodeType": "YulFunctionCall",
                                        "src": "28365:19:7"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "28359:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "28359:5:7"
                                    },
                                    "nativeSrc": "28359:26:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "28359:26:7"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "28350:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "28350:5:7"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nativeSrc": "28313:6:7",
                              "nodeType": "YulIdentifier",
                              "src": "28313:6:7"
                            },
                            "nativeSrc": "28310:89:7",
                            "nodeType": "YulIf",
                            "src": "28310:89:7"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "28419:4:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "28419:4:7"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "28478:5:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "28478:5:7"
                                    },
                                    {
                                      "name": "newLen",
                                      "nativeSrc": "28485:6:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "28485:6:7"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nativeSrc": "28425:52:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "28425:52:7"
                                  },
                                  "nativeSrc": "28425:67:7",
                                  "nodeType": "YulFunctionCall",
                                  "src": "28425:67:7"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "28412:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "28412:6:7"
                              },
                              "nativeSrc": "28412:81:7",
                              "nodeType": "YulFunctionCall",
                              "src": "28412:81:7"
                            },
                            "nativeSrc": "28412:81:7",
                            "nodeType": "YulExpressionStatement",
                            "src": "28412:81:7"
                          }
                        ]
                      },
                      "nativeSrc": "28261:242:7",
                      "nodeType": "YulCase",
                      "src": "28261:242:7",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nativeSrc": "27583:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "27583:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27591:2:7",
                        "nodeType": "YulLiteral",
                        "src": "27591:2:7",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "27580:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "27580:2:7"
                    },
                    "nativeSrc": "27580:14:7",
                    "nodeType": "YulFunctionCall",
                    "src": "27580:14:7"
                  },
                  "nativeSrc": "27573:930:7",
                  "nodeType": "YulSwitch",
                  "src": "27573:930:7"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage",
            "nativeSrc": "27212:1297:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "27291:4:7",
                "nodeType": "YulTypedName",
                "src": "27291:4:7",
                "type": ""
              },
              {
                "name": "src",
                "nativeSrc": "27297:3:7",
                "nodeType": "YulTypedName",
                "src": "27297:3:7",
                "type": ""
              }
            ],
            "src": "27212:1297:7"
          },
          {
            "body": {
              "nativeSrc": "28648:61:7",
              "nodeType": "YulBlock",
              "src": "28648:61:7",
              "statements": [
                {
                  "nativeSrc": "28658:45:7",
                  "nodeType": "YulAssignment",
                  "src": "28658:45:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "28691:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "28691:6:7"
                      },
                      {
                        "name": "pos",
                        "nativeSrc": "28699:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "28699:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_storage",
                      "nativeSrc": "28665:25:7",
                      "nodeType": "YulIdentifier",
                      "src": "28665:25:7"
                    },
                    "nativeSrc": "28665:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "28665:38:7"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "28658:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "28658:3:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_storage__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "28514:195:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "28624:3:7",
                "nodeType": "YulTypedName",
                "src": "28624:3:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "28629:6:7",
                "nodeType": "YulTypedName",
                "src": "28629:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "28640:3:7",
                "nodeType": "YulTypedName",
                "src": "28640:3:7",
                "type": ""
              }
            ],
            "src": "28514:195:7"
          },
          {
            "body": {
              "nativeSrc": "28795:103:7",
              "nodeType": "YulBlock",
              "src": "28795:103:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "28841:16:7",
                    "nodeType": "YulBlock",
                    "src": "28841:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "28850:1:7",
                              "nodeType": "YulLiteral",
                              "src": "28850:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "28853:1:7",
                              "nodeType": "YulLiteral",
                              "src": "28853:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "28843:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "28843:6:7"
                          },
                          "nativeSrc": "28843:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "28843:12:7"
                        },
                        "nativeSrc": "28843:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "28843:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "28816:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "28816:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "28825:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "28825:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "28812:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "28812:3:7"
                        },
                        "nativeSrc": "28812:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "28812:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "28837:2:7",
                        "nodeType": "YulLiteral",
                        "src": "28837:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "28808:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "28808:3:7"
                    },
                    "nativeSrc": "28808:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "28808:32:7"
                  },
                  "nativeSrc": "28805:52:7",
                  "nodeType": "YulIf",
                  "src": "28805:52:7"
                },
                {
                  "nativeSrc": "28866:26:7",
                  "nodeType": "YulAssignment",
                  "src": "28866:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "28882:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "28882:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "28876:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "28876:5:7"
                    },
                    "nativeSrc": "28876:16:7",
                    "nodeType": "YulFunctionCall",
                    "src": "28876:16:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "28866:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "28866:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256_fromMemory",
            "nativeSrc": "28714:184:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "28761:9:7",
                "nodeType": "YulTypedName",
                "src": "28761:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "28772:7:7",
                "nodeType": "YulTypedName",
                "src": "28772:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "28784:6:7",
                "nodeType": "YulTypedName",
                "src": "28784:6:7",
                "type": ""
              }
            ],
            "src": "28714:184:7"
          },
          {
            "body": {
              "nativeSrc": "28935:95:7",
              "nodeType": "YulBlock",
              "src": "28935:95:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "28952:1:7",
                        "nodeType": "YulLiteral",
                        "src": "28952:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "28959:3:7",
                            "nodeType": "YulLiteral",
                            "src": "28959:3:7",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "28964:10:7",
                            "nodeType": "YulLiteral",
                            "src": "28964:10:7",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "28955:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "28955:3:7"
                        },
                        "nativeSrc": "28955:20:7",
                        "nodeType": "YulFunctionCall",
                        "src": "28955:20:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "28945:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "28945:6:7"
                    },
                    "nativeSrc": "28945:31:7",
                    "nodeType": "YulFunctionCall",
                    "src": "28945:31:7"
                  },
                  "nativeSrc": "28945:31:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "28945:31:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "28992:1:7",
                        "nodeType": "YulLiteral",
                        "src": "28992:1:7",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "28995:4:7",
                        "nodeType": "YulLiteral",
                        "src": "28995:4:7",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "28985:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "28985:6:7"
                    },
                    "nativeSrc": "28985:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "28985:15:7"
                  },
                  "nativeSrc": "28985:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "28985:15:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "29016:1:7",
                        "nodeType": "YulLiteral",
                        "src": "29016:1:7",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "29019:4:7",
                        "nodeType": "YulLiteral",
                        "src": "29019:4:7",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "29009:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "29009:6:7"
                    },
                    "nativeSrc": "29009:15:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29009:15:7"
                  },
                  "nativeSrc": "29009:15:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "29009:15:7"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nativeSrc": "28903:127:7",
            "nodeType": "YulFunctionDefinition",
            "src": "28903:127:7"
          },
          {
            "body": {
              "nativeSrc": "29084:79:7",
              "nodeType": "YulBlock",
              "src": "29084:79:7",
              "statements": [
                {
                  "nativeSrc": "29094:17:7",
                  "nodeType": "YulAssignment",
                  "src": "29094:17:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "29106:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "29106:1:7"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "29109:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "29109:1:7"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "29102:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "29102:3:7"
                    },
                    "nativeSrc": "29102:9:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29102:9:7"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "29094:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "29094:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "29135:22:7",
                    "nodeType": "YulBlock",
                    "src": "29135:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "29137:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "29137:16:7"
                          },
                          "nativeSrc": "29137:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "29137:18:7"
                        },
                        "nativeSrc": "29137:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "29137:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nativeSrc": "29126:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "29126:4:7"
                      },
                      {
                        "name": "x",
                        "nativeSrc": "29132:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "29132:1:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "29123:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "29123:2:7"
                    },
                    "nativeSrc": "29123:11:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29123:11:7"
                  },
                  "nativeSrc": "29120:37:7",
                  "nodeType": "YulIf",
                  "src": "29120:37:7"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nativeSrc": "29035:128:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "29066:1:7",
                "nodeType": "YulTypedName",
                "src": "29066:1:7",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "29069:1:7",
                "nodeType": "YulTypedName",
                "src": "29069:1:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "29075:4:7",
                "nodeType": "YulTypedName",
                "src": "29075:4:7",
                "type": ""
              }
            ],
            "src": "29035:128:7"
          },
          {
            "body": {
              "nativeSrc": "29325:188:7",
              "nodeType": "YulBlock",
              "src": "29325:188:7",
              "statements": [
                {
                  "nativeSrc": "29335:26:7",
                  "nodeType": "YulAssignment",
                  "src": "29335:26:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "29347:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "29347:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "29358:2:7",
                        "nodeType": "YulLiteral",
                        "src": "29358:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "29343:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "29343:3:7"
                    },
                    "nativeSrc": "29343:18:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29343:18:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "29335:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "29335:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "29377:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "29377:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "29392:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "29392:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "29408:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "29408:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "29413:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "29413:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "29404:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "29404:3:7"
                                },
                                "nativeSrc": "29404:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "29404:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "29417:1:7",
                                "nodeType": "YulLiteral",
                                "src": "29417:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "29400:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "29400:3:7"
                            },
                            "nativeSrc": "29400:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "29400:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "29388:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "29388:3:7"
                        },
                        "nativeSrc": "29388:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "29388:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "29370:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "29370:6:7"
                    },
                    "nativeSrc": "29370:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29370:51:7"
                  },
                  "nativeSrc": "29370:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "29370:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "29441:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "29441:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "29452:2:7",
                            "nodeType": "YulLiteral",
                            "src": "29452:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "29437:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "29437:3:7"
                        },
                        "nativeSrc": "29437:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "29437:18:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "29457:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "29457:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "29430:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "29430:6:7"
                    },
                    "nativeSrc": "29430:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29430:34:7"
                  },
                  "nativeSrc": "29430:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "29430:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "29484:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "29484:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "29495:2:7",
                            "nodeType": "YulLiteral",
                            "src": "29495:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "29480:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "29480:3:7"
                        },
                        "nativeSrc": "29480:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "29480:18:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "29500:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "29500:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "29473:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "29473:6:7"
                    },
                    "nativeSrc": "29473:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29473:34:7"
                  },
                  "nativeSrc": "29473:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "29473:34:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
            "nativeSrc": "29168:345:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "29278:9:7",
                "nodeType": "YulTypedName",
                "src": "29278:9:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "29289:6:7",
                "nodeType": "YulTypedName",
                "src": "29289:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "29297:6:7",
                "nodeType": "YulTypedName",
                "src": "29297:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "29305:6:7",
                "nodeType": "YulTypedName",
                "src": "29305:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "29316:4:7",
                "nodeType": "YulTypedName",
                "src": "29316:4:7",
                "type": ""
              }
            ],
            "src": "29168:345:7"
          },
          {
            "body": {
              "nativeSrc": "29639:435:7",
              "nodeType": "YulBlock",
              "src": "29639:435:7",
              "statements": [
                {
                  "nativeSrc": "29649:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "29649:51:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "29688:11:7",
                        "nodeType": "YulIdentifier",
                        "src": "29688:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "29675:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "29675:12:7"
                    },
                    "nativeSrc": "29675:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29675:25:7"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "29653:18:7",
                      "nodeType": "YulTypedName",
                      "src": "29653:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "29789:16:7",
                    "nodeType": "YulBlock",
                    "src": "29789:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "29798:1:7",
                              "nodeType": "YulLiteral",
                              "src": "29798:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "29801:1:7",
                              "nodeType": "YulLiteral",
                              "src": "29801:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "29791:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "29791:6:7"
                          },
                          "nativeSrc": "29791:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "29791:12:7"
                        },
                        "nativeSrc": "29791:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "29791:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "29723:18:7",
                            "nodeType": "YulIdentifier",
                            "src": "29723:18:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "29751:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "29751:12:7"
                                    },
                                    "nativeSrc": "29751:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "29751:14:7"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "29767:8:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "29767:8:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "29747:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "29747:3:7"
                                },
                                "nativeSrc": "29747:29:7",
                                "nodeType": "YulFunctionCall",
                                "src": "29747:29:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "29782:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "29782:2:7",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "29778:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "29778:3:7"
                                },
                                "nativeSrc": "29778:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "29778:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "29743:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "29743:3:7"
                            },
                            "nativeSrc": "29743:43:7",
                            "nodeType": "YulFunctionCall",
                            "src": "29743:43:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "29719:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "29719:3:7"
                        },
                        "nativeSrc": "29719:68:7",
                        "nodeType": "YulFunctionCall",
                        "src": "29719:68:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "29712:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "29712:6:7"
                    },
                    "nativeSrc": "29712:76:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29712:76:7"
                  },
                  "nativeSrc": "29709:96:7",
                  "nodeType": "YulIf",
                  "src": "29709:96:7"
                },
                {
                  "nativeSrc": "29814:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "29814:47:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "29832:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "29832:8:7"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "29842:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "29842:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "29828:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "29828:3:7"
                    },
                    "nativeSrc": "29828:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29828:33:7"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "29818:6:7",
                      "nodeType": "YulTypedName",
                      "src": "29818:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "29870:30:7",
                  "nodeType": "YulAssignment",
                  "src": "29870:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "29893:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "29893:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "29880:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "29880:12:7"
                    },
                    "nativeSrc": "29880:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29880:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "29870:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "29870:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "29943:16:7",
                    "nodeType": "YulBlock",
                    "src": "29943:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "29952:1:7",
                              "nodeType": "YulLiteral",
                              "src": "29952:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "29955:1:7",
                              "nodeType": "YulLiteral",
                              "src": "29955:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "29945:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "29945:6:7"
                          },
                          "nativeSrc": "29945:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "29945:12:7"
                        },
                        "nativeSrc": "29945:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "29945:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "29915:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "29915:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "29923:18:7",
                        "nodeType": "YulLiteral",
                        "src": "29923:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "29912:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "29912:2:7"
                    },
                    "nativeSrc": "29912:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29912:30:7"
                  },
                  "nativeSrc": "29909:50:7",
                  "nodeType": "YulIf",
                  "src": "29909:50:7"
                },
                {
                  "nativeSrc": "29968:25:7",
                  "nodeType": "YulAssignment",
                  "src": "29968:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "29980:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "29980:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "29988:4:7",
                        "nodeType": "YulLiteral",
                        "src": "29988:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "29976:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "29976:3:7"
                    },
                    "nativeSrc": "29976:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "29976:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "29968:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "29968:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "30052:16:7",
                    "nodeType": "YulBlock",
                    "src": "30052:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "30061:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30061:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "30064:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30064:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "30054:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "30054:6:7"
                          },
                          "nativeSrc": "30054:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "30054:12:7"
                        },
                        "nativeSrc": "30054:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "30054:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "30009:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "30009:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "30019:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "30019:12:7"
                            },
                            "nativeSrc": "30019:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "30019:14:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "30039:1:7",
                                "nodeType": "YulLiteral",
                                "src": "30039:1:7",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "30042:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "30042:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "30035:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "30035:3:7"
                            },
                            "nativeSrc": "30035:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "30035:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "30015:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "30015:3:7"
                        },
                        "nativeSrc": "30015:35:7",
                        "nodeType": "YulFunctionCall",
                        "src": "30015:35:7"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "30005:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "30005:3:7"
                    },
                    "nativeSrc": "30005:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30005:46:7"
                  },
                  "nativeSrc": "30002:66:7",
                  "nodeType": "YulIf",
                  "src": "30002:66:7"
                }
              ]
            },
            "name": "access_calldata_tail_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
            "nativeSrc": "29518:556:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "29596:8:7",
                "nodeType": "YulTypedName",
                "src": "29596:8:7",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "29606:11:7",
                "nodeType": "YulTypedName",
                "src": "29606:11:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "29622:4:7",
                "nodeType": "YulTypedName",
                "src": "29622:4:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "29628:6:7",
                "nodeType": "YulTypedName",
                "src": "29628:6:7",
                "type": ""
              }
            ],
            "src": "29518:556:7"
          },
          {
            "body": {
              "nativeSrc": "30189:435:7",
              "nodeType": "YulBlock",
              "src": "30189:435:7",
              "statements": [
                {
                  "nativeSrc": "30199:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "30199:51:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "30238:11:7",
                        "nodeType": "YulIdentifier",
                        "src": "30238:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "30225:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "30225:12:7"
                    },
                    "nativeSrc": "30225:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30225:25:7"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "30203:18:7",
                      "nodeType": "YulTypedName",
                      "src": "30203:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "30339:16:7",
                    "nodeType": "YulBlock",
                    "src": "30339:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "30348:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30348:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "30351:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30351:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "30341:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "30341:6:7"
                          },
                          "nativeSrc": "30341:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "30341:12:7"
                        },
                        "nativeSrc": "30341:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "30341:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "30273:18:7",
                            "nodeType": "YulIdentifier",
                            "src": "30273:18:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "30301:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "30301:12:7"
                                    },
                                    "nativeSrc": "30301:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "30301:14:7"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "30317:8:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "30317:8:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "30297:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "30297:3:7"
                                },
                                "nativeSrc": "30297:29:7",
                                "nodeType": "YulFunctionCall",
                                "src": "30297:29:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "30332:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "30332:2:7",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "30328:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "30328:3:7"
                                },
                                "nativeSrc": "30328:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "30328:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "30293:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "30293:3:7"
                            },
                            "nativeSrc": "30293:43:7",
                            "nodeType": "YulFunctionCall",
                            "src": "30293:43:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "30269:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "30269:3:7"
                        },
                        "nativeSrc": "30269:68:7",
                        "nodeType": "YulFunctionCall",
                        "src": "30269:68:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "30262:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "30262:6:7"
                    },
                    "nativeSrc": "30262:76:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30262:76:7"
                  },
                  "nativeSrc": "30259:96:7",
                  "nodeType": "YulIf",
                  "src": "30259:96:7"
                },
                {
                  "nativeSrc": "30364:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "30364:47:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "30382:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "30382:8:7"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "30392:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "30392:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "30378:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "30378:3:7"
                    },
                    "nativeSrc": "30378:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30378:33:7"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "30368:6:7",
                      "nodeType": "YulTypedName",
                      "src": "30368:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "30420:30:7",
                  "nodeType": "YulAssignment",
                  "src": "30420:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "30443:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "30443:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "30430:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "30430:12:7"
                    },
                    "nativeSrc": "30430:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30430:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "30420:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "30420:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "30493:16:7",
                    "nodeType": "YulBlock",
                    "src": "30493:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "30502:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30502:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "30505:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30505:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "30495:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "30495:6:7"
                          },
                          "nativeSrc": "30495:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "30495:12:7"
                        },
                        "nativeSrc": "30495:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "30495:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "30465:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "30465:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "30473:18:7",
                        "nodeType": "YulLiteral",
                        "src": "30473:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "30462:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "30462:2:7"
                    },
                    "nativeSrc": "30462:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30462:30:7"
                  },
                  "nativeSrc": "30459:50:7",
                  "nodeType": "YulIf",
                  "src": "30459:50:7"
                },
                {
                  "nativeSrc": "30518:25:7",
                  "nodeType": "YulAssignment",
                  "src": "30518:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "30530:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "30530:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "30538:4:7",
                        "nodeType": "YulLiteral",
                        "src": "30538:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "30526:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "30526:3:7"
                    },
                    "nativeSrc": "30526:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30526:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "30518:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "30518:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "30602:16:7",
                    "nodeType": "YulBlock",
                    "src": "30602:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "30611:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30611:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "30614:1:7",
                              "nodeType": "YulLiteral",
                              "src": "30614:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "30604:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "30604:6:7"
                          },
                          "nativeSrc": "30604:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "30604:12:7"
                        },
                        "nativeSrc": "30604:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "30604:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "30559:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "30559:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "30569:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "30569:12:7"
                            },
                            "nativeSrc": "30569:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "30569:14:7"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "30589:1:7",
                                "nodeType": "YulLiteral",
                                "src": "30589:1:7",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "30592:6:7",
                                "nodeType": "YulIdentifier",
                                "src": "30592:6:7"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "30585:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "30585:3:7"
                            },
                            "nativeSrc": "30585:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "30585:14:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "30565:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "30565:3:7"
                        },
                        "nativeSrc": "30565:35:7",
                        "nodeType": "YulFunctionCall",
                        "src": "30565:35:7"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "30555:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "30555:3:7"
                    },
                    "nativeSrc": "30555:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30555:46:7"
                  },
                  "nativeSrc": "30552:66:7",
                  "nodeType": "YulIf",
                  "src": "30552:66:7"
                }
              ]
            },
            "name": "access_calldata_tail_t_array$_t_bytes32_$dyn_calldata_ptr",
            "nativeSrc": "30079:545:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "30146:8:7",
                "nodeType": "YulTypedName",
                "src": "30146:8:7",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "30156:11:7",
                "nodeType": "YulTypedName",
                "src": "30156:11:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "30172:4:7",
                "nodeType": "YulTypedName",
                "src": "30172:4:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "30178:6:7",
                "nodeType": "YulTypedName",
                "src": "30178:6:7",
                "type": ""
              }
            ],
            "src": "30079:545:7"
          },
          {
            "body": {
              "nativeSrc": "30906:313:7",
              "nodeType": "YulBlock",
              "src": "30906:313:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "30923:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "30923:9:7"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "30934:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "30934:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "30916:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "30916:6:7"
                    },
                    "nativeSrc": "30916:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30916:25:7"
                  },
                  "nativeSrc": "30916:25:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "30916:25:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "30961:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "30961:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "30972:2:7",
                            "nodeType": "YulLiteral",
                            "src": "30972:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "30957:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "30957:3:7"
                        },
                        "nativeSrc": "30957:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "30957:18:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "30977:2:7",
                        "nodeType": "YulLiteral",
                        "src": "30977:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "30950:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "30950:6:7"
                    },
                    "nativeSrc": "30950:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "30950:30:7"
                  },
                  "nativeSrc": "30950:30:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "30950:30:7"
                },
                {
                  "nativeSrc": "30989:87:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "30989:87:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "31041:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31041:6:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "31049:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31049:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "31061:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31061:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "31072:2:7",
                            "nodeType": "YulLiteral",
                            "src": "31072:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "31057:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31057:3:7"
                        },
                        "nativeSrc": "31057:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31057:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "31003:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "31003:37:7"
                    },
                    "nativeSrc": "31003:73:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31003:73:7"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "30993:6:7",
                      "nodeType": "YulTypedName",
                      "src": "30993:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "31096:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31096:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "31107:2:7",
                            "nodeType": "YulLiteral",
                            "src": "31107:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "31092:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31092:3:7"
                        },
                        "nativeSrc": "31092:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31092:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "31116:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "31116:6:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "31124:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31124:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "31112:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31112:3:7"
                        },
                        "nativeSrc": "31112:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31112:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "31085:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "31085:6:7"
                    },
                    "nativeSrc": "31085:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31085:50:7"
                  },
                  "nativeSrc": "31085:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "31085:50:7"
                },
                {
                  "nativeSrc": "31144:69:7",
                  "nodeType": "YulAssignment",
                  "src": "31144:69:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nativeSrc": "31190:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31190:6:7"
                      },
                      {
                        "name": "value4",
                        "nativeSrc": "31198:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31198:6:7"
                      },
                      {
                        "name": "tail_1",
                        "nativeSrc": "31206:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31206:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "31152:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "31152:37:7"
                    },
                    "nativeSrc": "31152:61:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31152:61:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "31144:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "31144:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_bytes32_$dyn_calldata_ptr__to_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
            "nativeSrc": "30629:590:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "30843:9:7",
                "nodeType": "YulTypedName",
                "src": "30843:9:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "30854:6:7",
                "nodeType": "YulTypedName",
                "src": "30854:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "30862:6:7",
                "nodeType": "YulTypedName",
                "src": "30862:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "30870:6:7",
                "nodeType": "YulTypedName",
                "src": "30870:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "30878:6:7",
                "nodeType": "YulTypedName",
                "src": "30878:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "30886:6:7",
                "nodeType": "YulTypedName",
                "src": "30886:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "30897:4:7",
                "nodeType": "YulTypedName",
                "src": "30897:4:7",
                "type": ""
              }
            ],
            "src": "30629:590:7"
          },
          {
            "body": {
              "nativeSrc": "31561:413:7",
              "nodeType": "YulBlock",
              "src": "31561:413:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "31578:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "31578:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "31589:2:7",
                        "nodeType": "YulLiteral",
                        "src": "31589:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "31571:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "31571:6:7"
                    },
                    "nativeSrc": "31571:21:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31571:21:7"
                  },
                  "nativeSrc": "31571:21:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "31571:21:7"
                },
                {
                  "nativeSrc": "31601:87:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "31601:87:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "31653:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31653:6:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "31661:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31661:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "31673:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31673:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "31684:2:7",
                            "nodeType": "YulLiteral",
                            "src": "31684:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "31669:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31669:3:7"
                        },
                        "nativeSrc": "31669:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31669:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "31615:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "31615:37:7"
                    },
                    "nativeSrc": "31615:73:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31615:73:7"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "31605:6:7",
                      "nodeType": "YulTypedName",
                      "src": "31605:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "31708:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31708:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "31719:2:7",
                            "nodeType": "YulLiteral",
                            "src": "31719:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "31704:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31704:3:7"
                        },
                        "nativeSrc": "31704:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31704:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "31728:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "31728:6:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "31736:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31736:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "31724:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31724:3:7"
                        },
                        "nativeSrc": "31724:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31724:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "31697:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "31697:6:7"
                    },
                    "nativeSrc": "31697:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31697:50:7"
                  },
                  "nativeSrc": "31697:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "31697:50:7"
                },
                {
                  "nativeSrc": "31756:75:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "31756:75:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nativeSrc": "31808:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31808:6:7"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "31816:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31816:6:7"
                      },
                      {
                        "name": "tail_1",
                        "nativeSrc": "31824:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31824:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "31770:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "31770:37:7"
                    },
                    "nativeSrc": "31770:61:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31770:61:7"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nativeSrc": "31760:6:7",
                      "nodeType": "YulTypedName",
                      "src": "31760:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "31851:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31851:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "31862:2:7",
                            "nodeType": "YulLiteral",
                            "src": "31862:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "31847:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31847:3:7"
                        },
                        "nativeSrc": "31847:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31847:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nativeSrc": "31871:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "31871:6:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "31879:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "31879:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "31867:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "31867:3:7"
                        },
                        "nativeSrc": "31867:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "31867:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "31840:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "31840:6:7"
                    },
                    "nativeSrc": "31840:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31840:50:7"
                  },
                  "nativeSrc": "31840:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "31840:50:7"
                },
                {
                  "nativeSrc": "31899:69:7",
                  "nodeType": "YulAssignment",
                  "src": "31899:69:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nativeSrc": "31945:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31945:6:7"
                      },
                      {
                        "name": "value5",
                        "nativeSrc": "31953:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31953:6:7"
                      },
                      {
                        "name": "tail_2",
                        "nativeSrc": "31961:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "31961:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "31907:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "31907:37:7"
                    },
                    "nativeSrc": "31907:61:7",
                    "nodeType": "YulFunctionCall",
                    "src": "31907:61:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "31899:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "31899:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_bytes32_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
            "nativeSrc": "31224:750:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "31490:9:7",
                "nodeType": "YulTypedName",
                "src": "31490:9:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "31501:6:7",
                "nodeType": "YulTypedName",
                "src": "31501:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "31509:6:7",
                "nodeType": "YulTypedName",
                "src": "31509:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "31517:6:7",
                "nodeType": "YulTypedName",
                "src": "31517:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "31525:6:7",
                "nodeType": "YulTypedName",
                "src": "31525:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "31533:6:7",
                "nodeType": "YulTypedName",
                "src": "31533:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "31541:6:7",
                "nodeType": "YulTypedName",
                "src": "31541:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "31552:4:7",
                "nodeType": "YulTypedName",
                "src": "31552:4:7",
                "type": ""
              }
            ],
            "src": "31224:750:7"
          },
          {
            "body": {
              "nativeSrc": "32344:458:7",
              "nodeType": "YulBlock",
              "src": "32344:458:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "32361:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "32361:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "32372:3:7",
                        "nodeType": "YulLiteral",
                        "src": "32372:3:7",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "32354:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "32354:6:7"
                    },
                    "nativeSrc": "32354:22:7",
                    "nodeType": "YulFunctionCall",
                    "src": "32354:22:7"
                  },
                  "nativeSrc": "32354:22:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "32354:22:7"
                },
                {
                  "nativeSrc": "32385:88:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "32385:88:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "32437:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32437:6:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "32445:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32445:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "32457:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "32457:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "32468:3:7",
                            "nodeType": "YulLiteral",
                            "src": "32468:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "32453:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "32453:3:7"
                        },
                        "nativeSrc": "32453:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "32453:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "32399:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "32399:37:7"
                    },
                    "nativeSrc": "32399:74:7",
                    "nodeType": "YulFunctionCall",
                    "src": "32399:74:7"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "32389:6:7",
                      "nodeType": "YulTypedName",
                      "src": "32389:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "32493:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "32493:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "32504:2:7",
                            "nodeType": "YulLiteral",
                            "src": "32504:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "32489:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "32489:3:7"
                        },
                        "nativeSrc": "32489:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "32489:18:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "32509:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32509:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "32482:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "32482:6:7"
                    },
                    "nativeSrc": "32482:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "32482:34:7"
                  },
                  "nativeSrc": "32482:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "32482:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "32536:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "32536:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "32547:2:7",
                            "nodeType": "YulLiteral",
                            "src": "32547:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "32532:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "32532:3:7"
                        },
                        "nativeSrc": "32532:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "32532:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "32556:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "32556:6:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "32564:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "32564:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "32552:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "32552:3:7"
                        },
                        "nativeSrc": "32552:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "32552:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "32525:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "32525:6:7"
                    },
                    "nativeSrc": "32525:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "32525:50:7"
                  },
                  "nativeSrc": "32525:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "32525:50:7"
                },
                {
                  "nativeSrc": "32584:75:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "32584:75:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nativeSrc": "32636:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32636:6:7"
                      },
                      {
                        "name": "value4",
                        "nativeSrc": "32644:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32644:6:7"
                      },
                      {
                        "name": "tail_1",
                        "nativeSrc": "32652:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32652:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "32598:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "32598:37:7"
                    },
                    "nativeSrc": "32598:61:7",
                    "nodeType": "YulFunctionCall",
                    "src": "32598:61:7"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nativeSrc": "32588:6:7",
                      "nodeType": "YulTypedName",
                      "src": "32588:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "32679:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "32679:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "32690:2:7",
                            "nodeType": "YulLiteral",
                            "src": "32690:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "32675:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "32675:3:7"
                        },
                        "nativeSrc": "32675:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "32675:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nativeSrc": "32699:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "32699:6:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "32707:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "32707:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "32695:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "32695:3:7"
                        },
                        "nativeSrc": "32695:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "32695:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "32668:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "32668:6:7"
                    },
                    "nativeSrc": "32668:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "32668:50:7"
                  },
                  "nativeSrc": "32668:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "32668:50:7"
                },
                {
                  "nativeSrc": "32727:69:7",
                  "nodeType": "YulAssignment",
                  "src": "32727:69:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value5",
                        "nativeSrc": "32773:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32773:6:7"
                      },
                      {
                        "name": "value6",
                        "nativeSrc": "32781:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32781:6:7"
                      },
                      {
                        "name": "tail_2",
                        "nativeSrc": "32789:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "32789:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "32735:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "32735:37:7"
                    },
                    "nativeSrc": "32735:61:7",
                    "nodeType": "YulFunctionCall",
                    "src": "32735:61:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "32727:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "32727:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr_t_uint256_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_bytes32_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
            "nativeSrc": "31979:823:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "32265:9:7",
                "nodeType": "YulTypedName",
                "src": "32265:9:7",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "32276:6:7",
                "nodeType": "YulTypedName",
                "src": "32276:6:7",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "32284:6:7",
                "nodeType": "YulTypedName",
                "src": "32284:6:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "32292:6:7",
                "nodeType": "YulTypedName",
                "src": "32292:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "32300:6:7",
                "nodeType": "YulTypedName",
                "src": "32300:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "32308:6:7",
                "nodeType": "YulTypedName",
                "src": "32308:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "32316:6:7",
                "nodeType": "YulTypedName",
                "src": "32316:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "32324:6:7",
                "nodeType": "YulTypedName",
                "src": "32324:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "32335:4:7",
                "nodeType": "YulTypedName",
                "src": "32335:4:7",
                "type": ""
              }
            ],
            "src": "31979:823:7"
          },
          {
            "body": {
              "nativeSrc": "32996:170:7",
              "nodeType": "YulBlock",
              "src": "32996:170:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "33013:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "33013:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "33024:2:7",
                        "nodeType": "YulLiteral",
                        "src": "33024:2:7",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "33006:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "33006:6:7"
                    },
                    "nativeSrc": "33006:21:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33006:21:7"
                  },
                  "nativeSrc": "33006:21:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "33006:21:7"
                },
                {
                  "nativeSrc": "33036:81:7",
                  "nodeType": "YulAssignment",
                  "src": "33036:81:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "33082:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "33082:6:7"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "33090:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "33090:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "33102:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "33102:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "33113:2:7",
                            "nodeType": "YulLiteral",
                            "src": "33113:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "33098:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "33098:3:7"
                        },
                        "nativeSrc": "33098:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "33098:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn_calldata",
                      "nativeSrc": "33044:37:7",
                      "nodeType": "YulIdentifier",
                      "src": "33044:37:7"
                    },
                    "nativeSrc": "33044:73:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33044:73:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "33036:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "33036:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "33137:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "33137:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "33148:2:7",
                            "nodeType": "YulLiteral",
                            "src": "33148:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "33133:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "33133:3:7"
                        },
                        "nativeSrc": "33133:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "33133:18:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "33153:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "33153:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "33126:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "33126:6:7"
                    },
                    "nativeSrc": "33126:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33126:34:7"
                  },
                  "nativeSrc": "33126:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "33126:34:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__fromStack_reversed",
            "nativeSrc": "32807:359:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "32949:9:7",
                "nodeType": "YulTypedName",
                "src": "32949:9:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "32960:6:7",
                "nodeType": "YulTypedName",
                "src": "32960:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "32968:6:7",
                "nodeType": "YulTypedName",
                "src": "32968:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "32976:6:7",
                "nodeType": "YulTypedName",
                "src": "32976:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "32987:4:7",
                "nodeType": "YulTypedName",
                "src": "32987:4:7",
                "type": ""
              }
            ],
            "src": "32807:359:7"
          },
          {
            "body": {
              "nativeSrc": "33265:427:7",
              "nodeType": "YulBlock",
              "src": "33265:427:7",
              "statements": [
                {
                  "nativeSrc": "33275:51:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "33275:51:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "33314:11:7",
                        "nodeType": "YulIdentifier",
                        "src": "33314:11:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "33301:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "33301:12:7"
                    },
                    "nativeSrc": "33301:25:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33301:25:7"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "33279:18:7",
                      "nodeType": "YulTypedName",
                      "src": "33279:18:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "33415:16:7",
                    "nodeType": "YulBlock",
                    "src": "33415:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "33424:1:7",
                              "nodeType": "YulLiteral",
                              "src": "33424:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "33427:1:7",
                              "nodeType": "YulLiteral",
                              "src": "33427:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "33417:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "33417:6:7"
                          },
                          "nativeSrc": "33417:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "33417:12:7"
                        },
                        "nativeSrc": "33417:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "33417:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "33349:18:7",
                            "nodeType": "YulIdentifier",
                            "src": "33349:18:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "33377:12:7",
                                      "nodeType": "YulIdentifier",
                                      "src": "33377:12:7"
                                    },
                                    "nativeSrc": "33377:14:7",
                                    "nodeType": "YulFunctionCall",
                                    "src": "33377:14:7"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "33393:8:7",
                                    "nodeType": "YulIdentifier",
                                    "src": "33393:8:7"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "33373:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "33373:3:7"
                                },
                                "nativeSrc": "33373:29:7",
                                "nodeType": "YulFunctionCall",
                                "src": "33373:29:7"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "33408:2:7",
                                    "nodeType": "YulLiteral",
                                    "src": "33408:2:7",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "33404:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "33404:3:7"
                                },
                                "nativeSrc": "33404:7:7",
                                "nodeType": "YulFunctionCall",
                                "src": "33404:7:7"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "33369:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "33369:3:7"
                            },
                            "nativeSrc": "33369:43:7",
                            "nodeType": "YulFunctionCall",
                            "src": "33369:43:7"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "33345:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "33345:3:7"
                        },
                        "nativeSrc": "33345:68:7",
                        "nodeType": "YulFunctionCall",
                        "src": "33345:68:7"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "33338:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "33338:6:7"
                    },
                    "nativeSrc": "33338:76:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33338:76:7"
                  },
                  "nativeSrc": "33335:96:7",
                  "nodeType": "YulIf",
                  "src": "33335:96:7"
                },
                {
                  "nativeSrc": "33440:47:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "33440:47:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "33458:8:7",
                        "nodeType": "YulIdentifier",
                        "src": "33458:8:7"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "33468:18:7",
                        "nodeType": "YulIdentifier",
                        "src": "33468:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "33454:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "33454:3:7"
                    },
                    "nativeSrc": "33454:33:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33454:33:7"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "33444:6:7",
                      "nodeType": "YulTypedName",
                      "src": "33444:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "33496:30:7",
                  "nodeType": "YulAssignment",
                  "src": "33496:30:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "33519:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "33519:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "33506:12:7",
                      "nodeType": "YulIdentifier",
                      "src": "33506:12:7"
                    },
                    "nativeSrc": "33506:20:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33506:20:7"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "33496:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "33496:6:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "33569:16:7",
                    "nodeType": "YulBlock",
                    "src": "33569:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "33578:1:7",
                              "nodeType": "YulLiteral",
                              "src": "33578:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "33581:1:7",
                              "nodeType": "YulLiteral",
                              "src": "33581:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "33571:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "33571:6:7"
                          },
                          "nativeSrc": "33571:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "33571:12:7"
                        },
                        "nativeSrc": "33571:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "33571:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "33541:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "33541:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "33549:18:7",
                        "nodeType": "YulLiteral",
                        "src": "33549:18:7",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "33538:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "33538:2:7"
                    },
                    "nativeSrc": "33538:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33538:30:7"
                  },
                  "nativeSrc": "33535:50:7",
                  "nodeType": "YulIf",
                  "src": "33535:50:7"
                },
                {
                  "nativeSrc": "33594:25:7",
                  "nodeType": "YulAssignment",
                  "src": "33594:25:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "33606:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "33606:6:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "33614:4:7",
                        "nodeType": "YulLiteral",
                        "src": "33614:4:7",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "33602:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "33602:3:7"
                    },
                    "nativeSrc": "33602:17:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33602:17:7"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "33594:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "33594:4:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "33670:16:7",
                    "nodeType": "YulBlock",
                    "src": "33670:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "33679:1:7",
                              "nodeType": "YulLiteral",
                              "src": "33679:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "33682:1:7",
                              "nodeType": "YulLiteral",
                              "src": "33682:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "33672:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "33672:6:7"
                          },
                          "nativeSrc": "33672:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "33672:12:7"
                        },
                        "nativeSrc": "33672:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "33672:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "33635:4:7",
                        "nodeType": "YulIdentifier",
                        "src": "33635:4:7"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "33645:12:7",
                              "nodeType": "YulIdentifier",
                              "src": "33645:12:7"
                            },
                            "nativeSrc": "33645:14:7",
                            "nodeType": "YulFunctionCall",
                            "src": "33645:14:7"
                          },
                          {
                            "name": "length",
                            "nativeSrc": "33661:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "33661:6:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "33641:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "33641:3:7"
                        },
                        "nativeSrc": "33641:27:7",
                        "nodeType": "YulFunctionCall",
                        "src": "33641:27:7"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "33631:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "33631:3:7"
                    },
                    "nativeSrc": "33631:38:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33631:38:7"
                  },
                  "nativeSrc": "33628:58:7",
                  "nodeType": "YulIf",
                  "src": "33628:58:7"
                }
              ]
            },
            "name": "access_calldata_tail_t_bytes_calldata_ptr",
            "nativeSrc": "33171:521:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "33222:8:7",
                "nodeType": "YulTypedName",
                "src": "33222:8:7",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "33232:11:7",
                "nodeType": "YulTypedName",
                "src": "33232:11:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "33248:4:7",
                "nodeType": "YulTypedName",
                "src": "33248:4:7",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "33254:6:7",
                "nodeType": "YulTypedName",
                "src": "33254:6:7",
                "type": ""
              }
            ],
            "src": "33171:521:7"
          },
          {
            "body": {
              "nativeSrc": "33902:274:7",
              "nodeType": "YulBlock",
              "src": "33902:274:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "33919:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "33919:9:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "33930:2:7",
                        "nodeType": "YulLiteral",
                        "src": "33930:2:7",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "33912:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "33912:6:7"
                    },
                    "nativeSrc": "33912:21:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33912:21:7"
                  },
                  "nativeSrc": "33912:21:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "33912:21:7"
                },
                {
                  "nativeSrc": "33942:59:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "33942:59:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "33974:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "33974:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "33986:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "33986:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "33997:2:7",
                            "nodeType": "YulLiteral",
                            "src": "33997:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "33982:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "33982:3:7"
                        },
                        "nativeSrc": "33982:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "33982:18:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "33956:17:7",
                      "nodeType": "YulIdentifier",
                      "src": "33956:17:7"
                    },
                    "nativeSrc": "33956:45:7",
                    "nodeType": "YulFunctionCall",
                    "src": "33956:45:7"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "33946:6:7",
                      "nodeType": "YulTypedName",
                      "src": "33946:6:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "34021:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34021:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "34032:2:7",
                            "nodeType": "YulLiteral",
                            "src": "34032:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "34017:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34017:3:7"
                        },
                        "nativeSrc": "34017:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34017:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "34041:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "34041:6:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "34049:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34049:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "34037:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34037:3:7"
                        },
                        "nativeSrc": "34037:22:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34037:22:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "34010:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "34010:6:7"
                    },
                    "nativeSrc": "34010:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34010:50:7"
                  },
                  "nativeSrc": "34010:50:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "34010:50:7"
                },
                {
                  "nativeSrc": "34069:58:7",
                  "nodeType": "YulAssignment",
                  "src": "34069:58:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "34104:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "34104:6:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "34112:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "34112:6:7"
                      },
                      {
                        "name": "tail_1",
                        "nativeSrc": "34120:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "34120:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "34077:26:7",
                      "nodeType": "YulIdentifier",
                      "src": "34077:26:7"
                    },
                    "nativeSrc": "34077:50:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34077:50:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "34069:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "34069:4:7"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "34147:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34147:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "34158:2:7",
                            "nodeType": "YulLiteral",
                            "src": "34158:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "34143:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34143:3:7"
                        },
                        "nativeSrc": "34143:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34143:18:7"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "34163:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "34163:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "34136:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "34136:6:7"
                    },
                    "nativeSrc": "34136:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34136:34:7"
                  },
                  "nativeSrc": "34136:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "34136:34:7"
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr_t_bytes_calldata_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes_memory_ptr_t_bytes32__fromStack_reversed",
            "nativeSrc": "33697:479:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "33847:9:7",
                "nodeType": "YulTypedName",
                "src": "33847:9:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "33858:6:7",
                "nodeType": "YulTypedName",
                "src": "33858:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "33866:6:7",
                "nodeType": "YulTypedName",
                "src": "33866:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "33874:6:7",
                "nodeType": "YulTypedName",
                "src": "33874:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "33882:6:7",
                "nodeType": "YulTypedName",
                "src": "33882:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "33893:4:7",
                "nodeType": "YulTypedName",
                "src": "33893:4:7",
                "type": ""
              }
            ],
            "src": "33697:479:7"
          },
          {
            "body": {
              "nativeSrc": "34229:77:7",
              "nodeType": "YulBlock",
              "src": "34229:77:7",
              "statements": [
                {
                  "nativeSrc": "34239:16:7",
                  "nodeType": "YulAssignment",
                  "src": "34239:16:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "34250:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "34250:1:7"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "34253:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "34253:1:7"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "34246:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "34246:3:7"
                    },
                    "nativeSrc": "34246:9:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34246:9:7"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nativeSrc": "34239:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "34239:3:7"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "34278:22:7",
                    "nodeType": "YulBlock",
                    "src": "34278:22:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "34280:16:7",
                            "nodeType": "YulIdentifier",
                            "src": "34280:16:7"
                          },
                          "nativeSrc": "34280:18:7",
                          "nodeType": "YulFunctionCall",
                          "src": "34280:18:7"
                        },
                        "nativeSrc": "34280:18:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "34280:18:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "34270:1:7",
                        "nodeType": "YulIdentifier",
                        "src": "34270:1:7"
                      },
                      {
                        "name": "sum",
                        "nativeSrc": "34273:3:7",
                        "nodeType": "YulIdentifier",
                        "src": "34273:3:7"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "34267:2:7",
                      "nodeType": "YulIdentifier",
                      "src": "34267:2:7"
                    },
                    "nativeSrc": "34267:10:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34267:10:7"
                  },
                  "nativeSrc": "34264:36:7",
                  "nodeType": "YulIf",
                  "src": "34264:36:7"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nativeSrc": "34181:125:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "34212:1:7",
                "nodeType": "YulTypedName",
                "src": "34212:1:7",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "34215:1:7",
                "nodeType": "YulTypedName",
                "src": "34215:1:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nativeSrc": "34221:3:7",
                "nodeType": "YulTypedName",
                "src": "34221:3:7",
                "type": ""
              }
            ],
            "src": "34181:125:7"
          },
          {
            "body": {
              "nativeSrc": "34542:326:7",
              "nodeType": "YulBlock",
              "src": "34542:326:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "34559:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "34559:9:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "34574:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "34574:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "34590:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "34590:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "34595:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "34595:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "34586:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "34586:3:7"
                                },
                                "nativeSrc": "34586:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "34586:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "34599:1:7",
                                "nodeType": "YulLiteral",
                                "src": "34599:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "34582:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "34582:3:7"
                            },
                            "nativeSrc": "34582:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "34582:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "34570:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34570:3:7"
                        },
                        "nativeSrc": "34570:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34570:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "34552:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "34552:6:7"
                    },
                    "nativeSrc": "34552:51:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34552:51:7"
                  },
                  "nativeSrc": "34552:51:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "34552:51:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "34623:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34623:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "34634:2:7",
                            "nodeType": "YulLiteral",
                            "src": "34634:2:7",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "34619:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34619:3:7"
                        },
                        "nativeSrc": "34619:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34619:18:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "34643:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "34643:6:7"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "34659:3:7",
                                    "nodeType": "YulLiteral",
                                    "src": "34659:3:7",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "34664:1:7",
                                    "nodeType": "YulLiteral",
                                    "src": "34664:1:7",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "34655:3:7",
                                  "nodeType": "YulIdentifier",
                                  "src": "34655:3:7"
                                },
                                "nativeSrc": "34655:11:7",
                                "nodeType": "YulFunctionCall",
                                "src": "34655:11:7"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "34668:1:7",
                                "nodeType": "YulLiteral",
                                "src": "34668:1:7",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "34651:3:7",
                              "nodeType": "YulIdentifier",
                              "src": "34651:3:7"
                            },
                            "nativeSrc": "34651:19:7",
                            "nodeType": "YulFunctionCall",
                            "src": "34651:19:7"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "34639:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34639:3:7"
                        },
                        "nativeSrc": "34639:32:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34639:32:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "34612:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "34612:6:7"
                    },
                    "nativeSrc": "34612:60:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34612:60:7"
                  },
                  "nativeSrc": "34612:60:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "34612:60:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "34692:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34692:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "34703:2:7",
                            "nodeType": "YulLiteral",
                            "src": "34703:2:7",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "34688:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34688:3:7"
                        },
                        "nativeSrc": "34688:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34688:18:7"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "34708:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "34708:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "34681:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "34681:6:7"
                    },
                    "nativeSrc": "34681:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34681:34:7"
                  },
                  "nativeSrc": "34681:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "34681:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "34735:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34735:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "34746:2:7",
                            "nodeType": "YulLiteral",
                            "src": "34746:2:7",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "34731:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34731:3:7"
                        },
                        "nativeSrc": "34731:18:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34731:18:7"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "34751:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "34751:6:7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "34724:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "34724:6:7"
                    },
                    "nativeSrc": "34724:34:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34724:34:7"
                  },
                  "nativeSrc": "34724:34:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "34724:34:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "34778:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34778:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "34789:3:7",
                            "nodeType": "YulLiteral",
                            "src": "34789:3:7",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "34774:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34774:3:7"
                        },
                        "nativeSrc": "34774:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34774:19:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "34795:3:7",
                        "nodeType": "YulLiteral",
                        "src": "34795:3:7",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "34767:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "34767:6:7"
                    },
                    "nativeSrc": "34767:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34767:32:7"
                  },
                  "nativeSrc": "34767:32:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "34767:32:7"
                },
                {
                  "nativeSrc": "34808:54:7",
                  "nodeType": "YulAssignment",
                  "src": "34808:54:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nativeSrc": "34834:6:7",
                        "nodeType": "YulIdentifier",
                        "src": "34834:6:7"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "34846:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34846:9:7"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "34857:3:7",
                            "nodeType": "YulLiteral",
                            "src": "34857:3:7",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "34842:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34842:3:7"
                        },
                        "nativeSrc": "34842:19:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34842:19:7"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "34816:17:7",
                      "nodeType": "YulIdentifier",
                      "src": "34816:17:7"
                    },
                    "nativeSrc": "34816:46:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34816:46:7"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "34808:4:7",
                      "nodeType": "YulIdentifier",
                      "src": "34808:4:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nativeSrc": "34311:557:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "34479:9:7",
                "nodeType": "YulTypedName",
                "src": "34479:9:7",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "34490:6:7",
                "nodeType": "YulTypedName",
                "src": "34490:6:7",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "34498:6:7",
                "nodeType": "YulTypedName",
                "src": "34498:6:7",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "34506:6:7",
                "nodeType": "YulTypedName",
                "src": "34506:6:7",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "34514:6:7",
                "nodeType": "YulTypedName",
                "src": "34514:6:7",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "34522:6:7",
                "nodeType": "YulTypedName",
                "src": "34522:6:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "34533:4:7",
                "nodeType": "YulTypedName",
                "src": "34533:4:7",
                "type": ""
              }
            ],
            "src": "34311:557:7"
          },
          {
            "body": {
              "nativeSrc": "34953:169:7",
              "nodeType": "YulBlock",
              "src": "34953:169:7",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "34999:16:7",
                    "nodeType": "YulBlock",
                    "src": "34999:16:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "35008:1:7",
                              "nodeType": "YulLiteral",
                              "src": "35008:1:7",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "35011:1:7",
                              "nodeType": "YulLiteral",
                              "src": "35011:1:7",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "35001:6:7",
                            "nodeType": "YulIdentifier",
                            "src": "35001:6:7"
                          },
                          "nativeSrc": "35001:12:7",
                          "nodeType": "YulFunctionCall",
                          "src": "35001:12:7"
                        },
                        "nativeSrc": "35001:12:7",
                        "nodeType": "YulExpressionStatement",
                        "src": "35001:12:7"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "34974:7:7",
                            "nodeType": "YulIdentifier",
                            "src": "34974:7:7"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "34983:9:7",
                            "nodeType": "YulIdentifier",
                            "src": "34983:9:7"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "34970:3:7",
                          "nodeType": "YulIdentifier",
                          "src": "34970:3:7"
                        },
                        "nativeSrc": "34970:23:7",
                        "nodeType": "YulFunctionCall",
                        "src": "34970:23:7"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "34995:2:7",
                        "nodeType": "YulLiteral",
                        "src": "34995:2:7",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "34966:3:7",
                      "nodeType": "YulIdentifier",
                      "src": "34966:3:7"
                    },
                    "nativeSrc": "34966:32:7",
                    "nodeType": "YulFunctionCall",
                    "src": "34966:32:7"
                  },
                  "nativeSrc": "34963:52:7",
                  "nodeType": "YulIf",
                  "src": "34963:52:7"
                },
                {
                  "nativeSrc": "35024:29:7",
                  "nodeType": "YulVariableDeclaration",
                  "src": "35024:29:7",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "35043:9:7",
                        "nodeType": "YulIdentifier",
                        "src": "35043:9:7"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "35037:5:7",
                      "nodeType": "YulIdentifier",
                      "src": "35037:5:7"
                    },
                    "nativeSrc": "35037:16:7",
                    "nodeType": "YulFunctionCall",
                    "src": "35037:16:7"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "35028:5:7",
                      "nodeType": "YulTypedName",
                      "src": "35028:5:7",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "35086:5:7",
                        "nodeType": "YulIdentifier",
                        "src": "35086:5:7"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nativeSrc": "35062:23:7",
                      "nodeType": "YulIdentifier",
                      "src": "35062:23:7"
                    },
                    "nativeSrc": "35062:30:7",
                    "nodeType": "YulFunctionCall",
                    "src": "35062:30:7"
                  },
                  "nativeSrc": "35062:30:7",
                  "nodeType": "YulExpressionStatement",
                  "src": "35062:30:7"
                },
                {
                  "nativeSrc": "35101:15:7",
                  "nodeType": "YulAssignment",
                  "src": "35101:15:7",
                  "value": {
                    "name": "value",
                    "nativeSrc": "35111:5:7",
                    "nodeType": "YulIdentifier",
                    "src": "35111:5:7"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "35101:6:7",
                      "nodeType": "YulIdentifier",
                      "src": "35101:6:7"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nativeSrc": "34873:249:7",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "34919:9:7",
                "nodeType": "YulTypedName",
                "src": "34919:9:7",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "34930:7:7",
                "nodeType": "YulTypedName",
                "src": "34930:7:7",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "34942:6:7",
                "nodeType": "YulTypedName",
                "src": "34942:6:7",
                "type": ""
              }
            ],
            "src": "34873:249:7"
          }
        ]
      },
      "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(pos, i), 0x20), mload(add(add(value, i), 0x20)))\n        }\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_array$_t_string_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n        let value_3 := 0\n        value_3 := calldataload(add(headStart, 96))\n        value3 := value_3\n        let value_4 := 0\n        value_4 := calldataload(add(headStart, 128))\n        value4 := value_4\n        let value_5 := calldataload(add(headStart, 160))\n        if iszero(eq(value_5, and(value_5, 0xff))) { revert(0, 0) }\n        value5 := value_5\n        let value_6 := 0\n        value_6 := calldataload(add(headStart, 192))\n        value6 := value_6\n        let value_7 := 0\n        value_7 := calldataload(add(headStart, 224))\n        value7 := value_7\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_decode_struct_OpsInfo_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 224) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_struct_MVOinfo_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 64) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_OpsInfo_$3659_calldata_ptrt_struct$_MVOinfo_$3667_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_OpsInfo_calldata(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_struct_MVOinfo_calldata(add(headStart, offset_1), dataEnd)\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_decode_tuple_t_struct$_OpsInfo_$3659_calldata_ptrt_struct$_MVOinfo_$3667_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_array$_t_bytes16_$dyn_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_OpsInfo_calldata(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_struct_MVOinfo_calldata(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, 0xffffffffffffffff) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_3), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        let value := calldataload(add(headStart, 128))\n        validator_revert_address(value)\n        value6 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        let value6_1, value7_1 := abi_decode_string_calldata(add(headStart, offset_2), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_struct$_OpsInfo_$3659_calldata_ptrt_struct$_MVOinfo_$3667_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_OpsInfo_calldata(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_struct_MVOinfo_calldata(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n        let value_3 := 0\n        value_3 := calldataload(add(headStart, 96))\n        value3 := value_3\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_string_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := extract_byte_array_length(slotValue)\n        switch and(slotValue, 1)\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, mul(length, iszero(iszero(length))))\n        }\n        case 1 {\n            mstore(0, value)\n            let dataPos := keccak256(0, 0x20)\n            let i := 0\n            for { } lt(i, length) { i := add(i, 0x20) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, 1)\n            }\n            ret := add(pos, length)\n        }\n    }\n    function abi_encode_tuple_packed_t_string_storage_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let _1 := abi_encode_string_storage(value0, pos)\n        calldatacopy(_1, value1, value2)\n        let _2 := add(_1, value2)\n        mstore(_2, 0)\n        end := _2\n    }\n    function abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_string_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_string_calldata_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string_calldata(value1, value2, add(headStart, 64))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_string_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_array_uint256_dyn_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        if gt(length, sub(shl(251, 1), 1)) { revert(0, 0) }\n        let length_1 := shl(5, length)\n        calldatacopy(add(pos, 0x20), start, length_1)\n        end := add(add(pos, length_1), 0x20)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_string_calldata(value0, value1, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn_calldata(value2, value3, tail_1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), iszero(iszero(value4)))\n        mstore(add(headStart, 160), and(value5, 0xff))\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), value7)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_array$_t_string_calldata_ptr_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_array$_t_string_calldata_ptr_$dyn_calldata_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\n        let pos := tail_1\n        mstore(tail_1, value1)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, value1)), 64)\n        let srcPtr := value0\n        let i := 0\n        let _1 := add(sub(calldatasize(), value0), not(30))\n        for { } lt(i, value1) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            let rel_offset_of_tail := calldataload(srcPtr)\n            if iszero(slt(rel_offset_of_tail, _1)) { revert(0, 0) }\n            let value := add(rel_offset_of_tail, value0)\n            let length := calldataload(value)\n            let value_1 := add(value, 32)\n            if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n            if sgt(value_1, sub(calldatasize(), length)) { revert(0, 0) }\n            tail_2 := abi_encode_string_calldata(value_1, length, tail_2)\n            srcPtr := add(srcPtr, 32)\n            pos := add(pos, 32)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_bytes16(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, not(0xffffffffffffffffffffffffffffffff)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_address_t_uint256_t_bytes16__to_t_address_t_uint256_t_address_t_uint256_t_bytes16__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, not(0xffffffffffffffffffffffffffffffff)))\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function access_calldata_tail_t_array$_t_address_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_packed_t_bytes_storage__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        end := abi_encode_string_storage(value0, pos)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function access_calldata_tail_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_array$_t_bytes32_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_uint256_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_bytes32_$dyn_calldata_ptr__to_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_array_uint256_dyn_calldata(value1, value2, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn_calldata(value3, value4, tail_1)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_bytes32_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_array_uint256_dyn_calldata(value0, value1, add(headStart, 96))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn_calldata(value2, value3, tail_1)\n        mstore(add(headStart, 64), sub(tail_2, headStart))\n        tail := abi_encode_array_uint256_dyn_calldata(value4, value5, tail_2)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr_t_uint256_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_bytes32_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 128)\n        let tail_1 := abi_encode_array_uint256_dyn_calldata(value0, value1, add(headStart, 128))\n        mstore(add(headStart, 32), value2)\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn_calldata(value3, value4, tail_1)\n        mstore(add(headStart, 96), sub(tail_2, headStart))\n        tail := abi_encode_array_uint256_dyn_calldata(value5, value6, tail_2)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_array_uint256_dyn_calldata(value0, value1, add(headStart, 64))\n        mstore(add(headStart, 32), value2)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_bytes_calldata_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes_memory_ptr_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_string(value0, add(headStart, 96))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string_calldata(value1, value2, tail_1)\n        mstore(add(headStart, 64), value3)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_string(value4, add(headStart, 160))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}",
      "id": 7,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "7004:45927:2:-:0;;;313:1:4;288:26;;9891:4:2;9862:33;;15228:1064;;;;;;;;;;;;;;;;;;:::i;:::-;9411:4;15551:11;:24;;:53;;;;9411:4;15579:12;:25;;15551:53;15547:101;;;15626:22;;-1:-1:-1;;;15626:22:2;;;;;;;;;;;15547:101;15704:8;:20;;-1:-1:-1;;;;;;15704:20:2;-1:-1:-1;;;;;15704:20:2;;;;;;;;;;15735:12;;;;;15752:15;;;;15778:32;;;;15821:7;:18;15831:8;15821:7;:18;:::i;:::-;-1:-1:-1;15850:27:2;:41;;;15902:28;:43;;;15956:12;:28;;;16015:4;-1:-1:-1;15995:26:2;;;:11;15850:27;15995:26;15850:27;15995:26;;;:33;;16024:4;-1:-1:-1;;15995:33:2;;;;;;;;-1:-1:-1;;;;;16039:22:2;;;;;;;;:29;;;;;;;;;;16079:20;;;;16110:175;16134:14;:21;16130:1;:25;16110:175;;;16207:4;16174:11;:30;16186:14;16201:1;16186:17;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;16174:30:2;;;;;;;;;;;-1:-1:-1;16174:30:2;:37;;-1:-1:-1;;16174:37:2;;;;;;;;;;-1:-1:-1;16255:3:2;16110:175;;;;15228:1064;;;;;;;;;7004:45927;;14:139:7;-1:-1:-1;;;;;97:31:7;;87:42;;77:70;;143:1;140;133:12;77:70;14:139;:::o;158:146::-;237:13;;259:39;237:13;259:39;:::i;:::-;158:146;;;:::o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:275;512:2;506:9;577:2;558:13;;-1:-1:-1;;554:27:7;542:40;;-1:-1:-1;;;;;597:34:7;;633:22;;;594:62;591:88;;;659:18;;:::i;:::-;695:2;688:22;441:275;;-1:-1:-1;441:275:7:o;721:801::-;786:5;839:3;832:4;824:6;820:17;816:27;806:55;;857:1;854;847:12;806:55;884:13;;-1:-1:-1;;;;;909:30:7;;906:56;;;942:18;;:::i;:::-;988:6;985:1;981:14;1015:30;1039:4;1035:2;1031:13;1015:30;:::i;:::-;1081:19;;;1125:4;1157:15;;;1153:26;;;1116:14;;;;1191:15;;;1188:35;;;1219:1;1216;1209:12;1188:35;1255:4;1247:6;1243:17;1232:28;;1269:222;1285:6;1280:3;1277:15;1269:222;;;1360:3;1354:10;1377:39;1410:5;1377:39;:::i;:::-;1429:18;;1476:4;1302:14;;;;1467;;;;1269:222;;;1509:7;721:801;-1:-1:-1;;;;;;721:801:7:o;1527:667::-;1581:5;1634:3;1627:4;1619:6;1615:17;1611:27;1601:55;;1652:1;1649;1642:12;1601:55;1679:13;;-1:-1:-1;;;;;1704:30:7;;1701:56;;;1737:18;;:::i;:::-;1781:59;1828:2;1805:17;;-1:-1:-1;;1801:31:7;1834:4;1797:42;1781:59;:::i;:::-;1865:6;1856:7;1849:23;1919:3;1912:4;1903:6;1895;1891:19;1887:30;1884:39;1881:59;;;1936:1;1933;1926:12;1881:59;1958:1;1968:144;1982:6;1979:1;1976:13;1968:144;;;2095:4;2079:14;;;2075:25;;2069:32;2045:15;;;2041:26;;2034:68;1997:12;1968:144;;;-1:-1:-1;2161:1:7;2132:20;;;2154:4;2128:31;2121:42;;;;2136:7;1527:667;-1:-1:-1;;;1527:667:7:o;2199:1355::-;2384:6;2392;2400;2408;2416;2424;2432;2440;2448;2501:3;2489:9;2480:7;2476:23;2472:33;2469:53;;;2518:1;2515;2508:12;2469:53;2550:9;2544:16;2569:39;2602:5;2569:39;:::i;:::-;2627:5;-1:-1:-1;2651:49:7;2696:2;2681:18;;2651:49;:::i;:::-;2641:59;;2719:49;2764:2;2753:9;2749:18;2719:49;:::i;:::-;2812:2;2797:18;;2791:25;2709:59;;-1:-1:-1;;;;;;2828:30:7;;2825:50;;;2871:1;2868;2861:12;2825:50;2894:72;2958:7;2949:6;2938:9;2934:22;2894:72;:::i;:::-;2884:82;;;2990:1;3032:3;3021:9;3017:19;3011:26;3000:37;;3056:7;3046:17;;;3087:1;3129:3;3118:9;3114:19;3108:26;3097:37;;3153:7;3143:17;;;3184:1;3226:3;3215:9;3211:19;3205:26;3194:37;;3250:7;3240:17;;;3281:1;3323:3;3312:9;3308:19;3302:26;3291:37;;3347:7;3337:17;;;3400:3;3389:9;3385:19;3379:26;3446:1;3442;3438:2;3434:10;3430:18;3420:8;3417:32;3414:52;;;3462:1;3459;3452:12;3414:52;3485:63;3540:7;3529:8;3518:9;3514:24;3485:63;:::i;:::-;3475:73;;;2199:1355;;;;;;;;;;;:::o;3559:380::-;3638:1;3634:12;;;;3681;;;3702:61;;3756:4;3748:6;3744:17;3734:27;;3702:61;3809:2;3801:6;3798:14;3778:18;3775:38;3772:161;;3855:10;3850:3;3846:20;3843:1;3836:31;3890:4;3887:1;3880:15;3918:4;3915:1;3908:15;3772:161;;3559:380;;;:::o;4070:518::-;4172:2;4167:3;4164:11;4161:421;;;4208:5;4205:1;4198:16;4252:4;4249:1;4239:18;4322:2;4310:10;4306:19;4303:1;4299:27;4293:4;4289:38;4358:4;4346:10;4343:20;4340:47;;;-1:-1:-1;4381:4:7;4340:47;4436:2;4431:3;4427:12;4424:1;4420:20;4414:4;4410:31;4400:41;;4491:81;4509:2;4502:5;4499:13;4491:81;;;4568:1;4554:16;;4535:1;4524:13;4491:81;;;4495:3;;4161:421;4070:518;;;:::o;4764:1299::-;4884:10;;-1:-1:-1;;;;;4906:30:7;;4903:56;;;4939:18;;:::i;:::-;4968:97;5058:6;5018:38;5050:4;5044:11;5018:38;:::i;:::-;5012:4;4968:97;:::i;:::-;5114:4;5145:2;5134:14;;5162:1;5157:649;;;;5850:1;5867:6;5864:89;;;-1:-1:-1;5919:19:7;;;5913:26;5864:89;-1:-1:-1;;4721:1:7;4717:11;;;4713:24;4709:29;4699:40;4745:1;4741:11;;;4696:57;5966:81;;5127:930;;5157:649;4017:1;4010:14;;;4054:4;4041:18;;-1:-1:-1;;5193:20:7;;;5311:222;5325:7;5322:1;5319:14;5311:222;;;5407:19;;;5401:26;5386:42;;5514:4;5499:20;;;;5467:1;5455:14;;;;5341:12;5311:222;;;5315:3;5561:6;5552:7;5549:19;5546:201;;;5622:19;;;5616:26;-1:-1:-1;;5705:1:7;5701:14;;;5717:3;5697:24;5693:37;5689:42;5674:58;5659:74;;5546:201;-1:-1:-1;;;;5793:1:7;5777:14;;;5773:22;5760:36;;-1:-1:-1;4764:1299:7:o;6068:127::-;6129:10;6124:3;6120:20;6117:1;6110:31;6160:4;6157:1;6150:15;6184:4;6181:1;6174:15;6068:127;7004:45927:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "7004:45927:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16573:10;-1:-1:-1;;;;;16587:4:2;16573:18;;16569:50;;16600:19;;-1:-1:-1;;;16600:19:2;;;;;;;;;;;16569:50;7004:45927;;;;;3570:64;;;;;;;;;;-1:-1:-1;3570:64:2;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;668:25:7;;;656:2;641:18;3570:64:2;;;;;;;;4124:361;;;;;;;;;;-1:-1:-1;4124:361:2;;;;;:::i;:::-;;:::i;:::-;;;1255:14:7;;1248:22;1230:41;;1218:2;1203:18;4124:361:2;1090:187:7;37703:160:2;;;;;;;;;;-1:-1:-1;37703:160:2;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;32626:609::-;;;;;;;;;;-1:-1:-1;32626:609:2;;;;;:::i;:::-;;:::i;30698:859::-;;;;;;;;;;-1:-1:-1;30698:859:2;;;;;:::i;:::-;;:::i;9557:30::-;;;;;;;;;;-1:-1:-1;9557:30:2;;;;-1:-1:-1;;;;;9557:30:2;;;;;;-1:-1:-1;;;;;4874:32:7;;;4856:51;;4844:2;4829:18;9557:30:2;4694:219:7;20128:721:2;;;;;;;;;;-1:-1:-1;20128:721:2;;;;;:::i;:::-;;:::i;10059:43::-;;;;;;;;;;-1:-1:-1;10059:43:2;;;;;:::i;:::-;;;;;;;;;;;;;;;;9505;;;;;;;;;;;;;;;21552:1484;;;;;;;;;;-1:-1:-1;21552:1484:2;;;;;:::i;:::-;;:::i;9594:31::-;;;;;;;;;;-1:-1:-1;9594:31:2;;;;-1:-1:-1;;;;;9594:31:2;;;34935:197;;;;;;;;;;-1:-1:-1;34935:197:2;;;;;:::i;:::-;;:::i;9634:21::-;;;;;;;;;;;;;:::i;36850:699::-;;;;;;;;;;-1:-1:-1;36850:699:2;;;;;:::i;:::-;;:::i;9664:27::-;;;;;;;;;;;;;;;;10941:53;;;;;;;;;;-1:-1:-1;10941:53:2;;;;;:::i;:::-;;:::i;35646:707::-;;;;;;;;;;-1:-1:-1;35646:707:2;;;;;:::i;:::-;;:::i;10337:51::-;;;;;;;;;;-1:-1:-1;10337:51:2;;;;;:::i;:::-;;;;;;;;;;;;;;10280:50;;;;;;;;;;-1:-1:-1;10280:50:2;;;;;:::i;:::-;;;;;;;;;;;;;;16904:617;;;;;;;;;;-1:-1:-1;16904:617:2;;;;;:::i;:::-;;:::i;23766:693::-;;;;;;;;;;-1:-1:-1;23766:693:2;;;;;:::i;:::-;;:::i;27467:2893::-;;;;;;;;;;-1:-1:-1;27467:2893:2;;;;;:::i;:::-;;:::i;11129:49::-;;;;;;;;;;-1:-1:-1;11129:49:2;;;;;:::i;:::-;;;;;;;;;;;;;;17981:1435;;;;;;:::i;:::-;;:::i;10489:42::-;;;;;;;;;;-1:-1:-1;10489:42:2;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10489:42:2;;;6687:270;;;;;;;;;;-1:-1:-1;6687:270:2;;;;;:::i;:::-;-1:-1:-1;;;6687:270:2;;;;;;;;;;;;;;-1:-1:-1;;;;;;13042:33:7;;;13024:52;;13012:2;12997:18;6687:270:2;12880:202:7;10205:68:2;;;;;;;;;;-1:-1:-1;10205:68:2;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;31714:695;;;;;;;;;;-1:-1:-1;31714:695:2;;;;;:::i;:::-;;:::i;9862:33::-;;;;;;;;;;;;;;;;25186:1454;;;;;;;;;;-1:-1:-1;25186:1454:2;;;;;:::i;:::-;;:::i;6441:238::-;;;;;;;;;;-1:-1:-1;6441:238:2;;;;;:::i;:::-;-1:-1:-1;;;6441:238:2;;;;;;;;;34200:392;;;;;;;;;;-1:-1:-1;34200:392:2;;;;;:::i;:::-;;:::i;4124:361::-;4216:4;-1:-1:-1;;;;;;;;;4253:25:2;;;;:101;;-1:-1:-1;;;;;;;;;;4329:25:2;;;4253:101;:178;;;-1:-1:-1;;;;;;;;;;4406:25:2;;;4253:178;4233:198;4124:361;-1:-1:-1;;4124:361:2:o;37703:160::-;37789:13;37836:7;37845:9;;37822:33;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;37815:40;;37703:160;;;;:::o;32626:609::-;32732:10;12706:18;;;;:11;:18;;;;;;;;12701:51;;12733:19;;-1:-1:-1;;;12733:19:2;;;;;;;;;;;12701:51;32757:24;32749:33:::1;;;;;;32793:14;32832:10;32810:35;;32793:52;;32860:65;32879:5;32886:7;32895:21;32918:6;;32860:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;32860:18:2::1;::::0;-1:-1:-1;;;32860:65:2:i:1;:::-;32856:372;;;33073:5;33054:8;33063:6;;33054:16;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:24;;-1:-1:-1;;;;;;33054:24:2::1;-1:-1:-1::0;;;;;33054:24:2;;::::1;;::::0;;33145:22;;::::1;-1:-1:-1::0;33145:22:2;;;:15:::1;:22:::0;;;;;;33138:29;;-1:-1:-1;;;;;;33138:29:2;;;33145:22;33138:29:::1;-1:-1:-1::0;33138:29:2;::::1;-1:-1:-1::0;33138:29:2::1;:::i;:::-;;;33187;33202:5;33209:6;;33187:29;;;;;;;;:::i;:::-;;;;;;;;32856:372;32744:491;32626:609:::0;;;;:::o;30698:859::-;30872:8;30881:6;;30872:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;30858:10;-1:-1:-1;;;;;30872:16:2;;;30858:30;30854:64;;30897:21;;-1:-1:-1;;;30897:21:2;;;;;;;;;;;30854:64;9364:2;30933:25;;30929:61;;;30967:23;;-1:-1:-1;;;30967:23:2;;;;;;;;;;;30929:61;31005:30;;;31001:59;;31044:16;;-1:-1:-1;;;;;;31044:16:2;;;;;;;;;;;31001:59;31078:9;31073:380;31093:15;;;31073:380;;;31127:11;31141:4;;31146:1;31141:7;;;;;;;:::i;:::-;;;;;;;31127:21;;31226:19;:24;31246:3;31226:24;;;;;;;;;;;31220:38;;;;;:::i;:::-;;;31262:1;31220:43;31216:101;;31306:8;;31315:1;31306:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;31279:24;;;;:19;:24;;;;;;:38;;;:24;:38;:::i;:::-;;31216:101;-1:-1:-1;31423:3:2;;31073:380;;;;31524:25;31536:6;;31544:4;;31524:25;;;;;;;;;:::i;:::-;;;;;;;;30698:859;;;;;;:::o;20128:721::-;367:6:4;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:4;;;;;;;;;;;363:36;419:1;410:6;:10;-1:-1:-1;;;;;20414:31:2;::::1;;::::0;;;:15:::1;:31;::::0;;;;;:36;;20410:432:::1;;20588:27;::::0;;:15:::1;:27;::::0;;;20467:163:::1;::::0;20500:10;;20529:14;;20562:7;;20467:14:::1;:163::i;:::-;20410:432;;;-1:-1:-1::0;;;;;20784:31:2;::::1;;::::0;;;:15:::1;:31;::::0;;;;;20663:167:::1;::::0;20696:10;;20725:14;;20758:7;;20663:14:::1;:167::i;:::-;-1:-1:-1::0;;452:1:4;443:10;;-1:-1:-1;20128:721:2:o;21552:1484::-;367:6:4;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:4;;;;;;;;;;;363:36;419:1;410:6;:10;-1:-1:-1;;;;;21937:8:2::1;21919:26:::0;::::1;::::0;;::::1;::::0;21915:598:::1;;21962:264;::::0;-1:-1:-1;;;21962:264:2;;-1:-1:-1;;;;;21692:32:7;;;21962:264:2::1;::::0;::::1;21674:51:7::0;22070:4:2::1;21741:18:7::0;;;21734:60;21810:18;;;21803:34;;;21853:18;;;21846:34;;;22147:4:2::1;21896:19:7::0;;;21889:51;21989:4;21977:17;;21956:19;;;21949:46;22011:19;;;22004:35;;;22055:19;;;22048:35;;;21962:52:2;::::1;::::0;::::1;::::0;21646:19:7;;21962:264:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21915:598;;;22259:242;::::0;-1:-1:-1;;;22259:242:2;;-1:-1:-1;;;;;22423:32:7;;;22259:242:2::1;::::0;::::1;22405:51:7::0;22367:4:2::1;22472:18:7::0;;;22465:60;22541:18;;;22534:34;;;22584:18;;;22577:34;;;22660:4;22648:17;;22627:19;;;22620:46;22682:19;;;22675:35;;;22726:19;;;22719:35;;;22259:52:2;::::1;::::0;::::1;::::0;22377:19:7;;22259:242:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21915:598;-1:-1:-1::0;;;;;22678:31:2;::::1;22656:19;22678:31:::0;;;:15:::1;:31;::::0;;;;;;22724:16;;;22720:309:::1;;22878:27;::::0;;:15:::1;:27;::::0;;;22757:163:::1;::::0;22790:10:::1;::::0;22819:14;;22852:7;;22757:14:::1;:163::i;:::-;22720:309;;;22953:64;22968:10;22980:14;22996:7;23005:11;22953:14;:64::i;:::-;-1:-1:-1::0;;452:1:4;443:10;;-1:-1:-1;;;;;;;21552:1484:2:o;34935:197::-;35029:10;12706:18;;;;:11;:18;;;;;;;;12701:51;;12733:19;;-1:-1:-1;;;12733:19:2;;;;;;;;;;;12701:51;-1:-1:-1;;;;;35052:18:2;::::1;;::::0;;;:11:::1;:18;::::0;;;;;;;;:28;;-1:-1:-1;;35052:28:2::1;::::0;::::1;;::::0;;::::1;::::0;;;35096;;22933:51:7;;;23000:18;;;22993:50;35096:28:2::1;::::0;22906:18:7;35096:28:2::1;;;;;;;34935:197:::0;;;:::o;9634:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36850:699::-;36937:10;12706:18;;;;:11;:18;;;;;;;;12701:51;;12733:19;;-1:-1:-1;;;12733:19:2;;;;;;;;;;;12701:51;36960:14:::1;36999:10;36977:35;;36960:52;;37027:67;37046:11;37059:7;37068:21;37027:67;;;;;;;;;;;::::0;:18:::1;:67::i;:::-;37023:519;;;-1:-1:-1::0;;;;;37226:24:2;;::::1;;::::0;;;:11:::1;:24;::::0;;;;;;;:31;;37253:4:::1;-1:-1:-1::0;;37226:31:2;;::::1;::::0;::::1;::::0;;;37382:7:::1;::::0;;;;::::1;37370:20:::0;;;;;37363:27;;;;::::1;::::0;;37405:21;;-1:-1:-1;;;;;;37405:21:2::1;::::0;::::1;::::0;;;37502:28;;;:15:::1;:28:::0;;;;;37495:35;;-1:-1:-1;;;;;;37495:35:2;;;37502:28;37495:35:::1;::::0;;::::1;37226:24:::0;37495:35:::1;:::i;37023:519::-;36949:600;36850:699:::0;;:::o;10941:53::-;;;;;;;;;;;;;;;;:::i;35646:707::-;35735:10;12706:18;;;;:11;:18;;;;;;;;12701:51;;12733:19;;-1:-1:-1;;;12733:19:2;;;;;;;;;;;12701:51;35758:14:::1;35797:10;35775:35;;35758:52;;35825:69;35844:12;35858:7;35867:22;35825:69;;;;;;;;;;;::::0;:18:::1;:69::i;:::-;35821:525;;;-1:-1:-1::0;;;;;36024:25:2;;::::1;;::::0;;;:11:::1;:25;::::0;;;;;;;:32;;36052:4:::1;-1:-1:-1::0;;36024:32:2;;::::1;::::0;::::1;::::0;;;36181:8:::1;::::0;;;;::::1;36169:21:::0;;;;;36162:28;;;;::::1;::::0;;36205:23;;-1:-1:-1;;;;;;36205:23:2::1;::::0;::::1;::::0;;;36305:29;;;:15:::1;:29:::0;;;;;36298:36;;-1:-1:-1;;;;;;36298:36:2;;;36305:29;36298:36:::1;::::0;;::::1;36024:25:::0;36298:36:::1;:::i;16904:617::-:0;16990:10;12706:18;;;;:11;:18;;;;;;;;12701:51;;12733:19;;-1:-1:-1;;;12733:19:2;;;;;;;;;;;12701:51;17013:14:::1;17052:10;17030:35;;17013:52;;17080:70;17099:11;17112:7;17121:24;17080:70;;;;;;;;;;;::::0;:18:::1;:70::i;:::-;17076:438;;;-1:-1:-1::0;;;;;17305:24:2;::::1;;::::0;;;:11:::1;:24;::::0;;;;;;;:31;;-1:-1:-1;;17305:31:2::1;17332:4;17305:31:::0;;::::1;::::0;;;17351:11:::1;:55:::0;;-1:-1:-1;;;;;;17351:55:2::1;::::0;;::::1;::::0;;;17474:15:::1;:28:::0;;;;;17467:35;;-1:-1:-1;;;;;;17467:35:2;;;17474:28;17467:35:::1;::::0;;::::1;17305:24:::0;17467:35:::1;:::i;23766:693::-:0;23946:10;23932:25;;;;:13;:25;;;;;;;;-1:-1:-1;;;;;23932:41:2;;;;;;;;;;23976:15;;;;-1:-1:-1;23928:110:2;;;24013:25;;-1:-1:-1;;;24013:25:2;;;;;;;;;;;23928:110;24088:10;24074:25;;;;:13;:25;;;;;;;;-1:-1:-1;;;;;24074:41:2;;;;;;;;;:60;;24119:15;;;;24074:60;;;;24184:57;;24119:8;;24210;;24184:15;:57::i;:::-;24275:69;24286:8;24296:18;;;;24286:8;24296:18;:::i;:::-;:25;;24323:20;24275:10;:69::i;:::-;24411:11;;-1:-1:-1;;;;;24411:11:2;:23;24435:15;;;;:8;:15;:::i;:::-;24411:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23766:693;;;:::o;27467:2893::-;367:6:4;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:4;;;;;;;;;;;363:36;419:1;410:6;:10;27783:12:2::1;::::0;27827:17:::1;;::::0;::::1;:8:::0;:17:::1;:::i;:::-;:24:::0;-1:-1:-1;;27868:24:2;;::::1;;::::0;:55:::1;;-1:-1:-1::0;27896:27:2;;::::1;;27868:55;27864:97;;;27945:16;;-1:-1:-1::0;;;;;;27945:16:2::1;;;;;;;;;;;27864:97;27999:50;28015:8;28025;28035:13;27999:15;:50::i;:::-;28067:9;28062:1368;28086:8;28082:1;:12;28062:1368;;;28113:12;28128:17;;::::0;::::1;:8:::0;:17:::1;:::i;:::-;28146:1;28128:20;;;;;;;:::i;:::-;28177:10;28167:9;:21:::0;;;28128:20:::1;28167:21:::0;;;;;;;28128:20;;::::1;::::0;;;::::1;;28167:27:::0;;;;;;;;;;28128:20;;-1:-1:-1;28167:32:2;;;;-1:-1:-1;28163:62:2::1;;28208:17;;-1:-1:-1::0;;;28208:17:2::1;;;;;;;;;;;28163:62;28244:20;::::0;;;:14:::1;:20;::::0;;;;;28267:12:::1;-1:-1:-1::0;28240:91:2::1;;;28305:26;;-1:-1:-1::0;;;28305:26:2::1;;;;;;;;;;;28240:91;28356:25;::::0;;;:19:::1;:25;::::0;;;;28350:39;;::::1;::::0;::::1;:::i;:::-;:44:::0;;-1:-1:-1;28346:99:2::1;;28420:25;::::0;-1:-1:-1;;;28420:25:2;;::::1;::::0;::::1;668::7::0;;;641:18;;28420:25:2::1;;;;;;;;28346:99;28812:10;28849:4;28880:14;28921:8;;28930:1;28921:11;;;;;;;:::i;:::-;;;;;;;28959:5;;28965:1;28959:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;28775:215;::::0;;-1:-1:-1;;;;;25988:32:7;;;28775:215:2::1;::::0;::::1;25970:51:7::0;26037:18;;;26030:34;;;;26100:32;;;;26080:18;;;26073:60;26149:18;;;26142:34;-1:-1:-1;;;;;;26213:52:7;;;26192:19;;;26185:81;25942:19;;28775:215:2::1;::::0;;-1:-1:-1;;28775:215:2;;::::1;::::0;;;;;;28743:266;;28775:215:::1;28743:266:::0;;::::1;::::0;28705:17:::1;::::0;;;:11:::1;:17:::0;;;;;;:304:::1;28683:376;;29032:27;;-1:-1:-1::0;;;29032:27:2::1;;;;;;;;;;;28683:376;29129:17;::::0;;;:11:::1;:17;::::0;;;;;;;29122:24;;;29168:14:::1;:20:::0;;;;;29161:27;29203:26:::1;29209:10;29141:4:::0;29227:1:::1;29203:5;:26::i;:::-;29283:8;;29292:1;29283:11;;;;;;;:::i;:::-;;;;;;;29275:19;;;;29400:3;;;;;28098:1332;28062:1368;;;-1:-1:-1::0;29647:15:2::1;::::0;::::1;;29677:19:::0;;::::1;29673:57;;;29705:25;;-1:-1:-1::0;;;29705:25:2::1;;;;;;;;;;;29673:57;30129:12;30122:4;:19;30118:63;;;30143:38;30154:8;30164:1;30167:13;30143:10;:38::i;:::-;30194:51;30204:12;30218:10;30230:14;30194:9;:51::i;:::-;30312:11;::::0;-1:-1:-1;;;;;30312:11:2::1;:23;30336:15;;::::0;::::1;:8:::0;:15:::1;:::i;:::-;30312:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;452:1:4;443:10;;-1:-1:-1;;;;;;;;;;;;27467:2893:2:o;17981:1435::-;367:6:4;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:4;;;;;;;;;;;363:36;419:1;410:6;:10;18066:9:2::1;18079:1;18066:14:::0;18062:50:::1;;18089:23;;-1:-1:-1::0;;;18089:23:2::1;;;;;;;;;;;18062:50;18125:25;18203:27:::0;;;:15:::1;:27;::::0;;;18153:88:::1;::::0;18179:9:::1;::::0;18153:11:::1;:88::i;:::-;18125:116;;18252:26;18281:80;18307:17;18339:11;;18281;:80::i;:::-;-1:-1:-1::0;;;;;18649:25:2;;::::1;18372:19;18649:25:::0;;;:13:::1;:25;::::0;;;;;;;18675:4:::1;18649:31:::0;::::1;::::0;;;;;;;;:46;;18556:9:::1;:29:::0;;::::1;18649:46:::0;;::::1;::::0;;;18874:35;;-1:-1:-1;;;18874:35:2;;;;18252:109;;-1:-1:-1;18556:29:2;18874:5:::1;:13:::0;;::::1;::::0;::::1;::::0;18556:29;;18874:35:::1;::::0;;::::1;::::0;;;;;;;18556:29;18874:13;:35;::::1;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19044:8:2::1;::::0;19012:61:::1;::::0;-1:-1:-1;;;;;;19044:8:2::1;::::0;-1:-1:-1;19054:18:2;;-1:-1:-1;19012:31:2::1;:61::i;:::-;19252:7;::::0;19202:129:::1;::::0;-1:-1:-1;;;;;19252:7:2::1;19278:38:::0;;::::1;19202:31;:129::i;:::-;19358:50;::::0;;26451:25:7;;;19394:13:2::1;26507:2:7::0;26492:18;;26485:34;-1:-1:-1;;;;;19358:50:2;::::1;::::0;::::1;::::0;26424:18:7;19358:50:2::1;;;;;;;-1:-1:-1::0;;452:1:4;443:10;;-1:-1:-1;;17981:1435:2:o;31714:695::-;31776:10;12706:18;;;;:11;:18;;;;;;;;12701:51;;12733:19;;-1:-1:-1;;;12733:19:2;;;;;;;;;;;12701:51;31920:13:::1;31952:3;31920:37;;31968:14;32007:10;31985:35;;31968:52;;32035:62;32054:5;32061:7;32070:22;32035:62;;;;;;;;;;;::::0;:18:::1;:62::i;:::-;32031:371;;;32235:24;::::0;;;:19:::1;:24;::::0;;;;32228:31:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;32327:22:2;::::1;;::::0;;;:15:::1;:22;::::0;;;;32320:29;;-1:-1:-1;;;;;;32320:29:2;;;32327:22;32320:29:::1;::::0;;::::1;32327:22:::0;32320:29:::1;:::i;:::-;-1:-1:-1::0;;32369:21:2::1;::::0;668:25:7;;;32369:21:2::1;::::0;656:2:7;641:18;32369:21:2::1;;;;;;;32031:371;31788:621;;31714:695:::0;;:::o;25186:1454::-;367:6:4;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:4;;;;;;;;;;;363:36;419:1;410:6;:10;;;;25344:48:2::1;25360:9;25371:8;25381:10;25344:15;:48::i;:::-;25523:9;25518:906;25542:18;;::::0;::::1;:9:::0;:18:::1;:::i;:::-;:25;;25538:1;:29;25518:906;;;25586:16;25605:18;;::::0;::::1;:9:::0;:18:::1;:::i;:::-;25624:1;25605:21;;;;;;;:::i;:::-;;;;;;;25586:40;;25672:12;25645:14;:24;25660:8;25645:24;;;;;;;;;;;;:39;25641:95;;;25710:26;;-1:-1:-1::0;;;25710:26:2::1;;;;;;;;;;;25641:95;25761:29;::::0;;;:19:::1;:29;::::0;;;;25755:43;;::::1;::::0;::::1;:::i;:::-;:48:::0;;-1:-1:-1;25751:107:2::1;;25829:29;::::0;-1:-1:-1;;;25829:29:2;;::::1;::::0;::::1;668:25:7::0;;;641:18;;25829:29:2::1;522:177:7::0;25751:107:2::1;26115:10;26105:9;:21:::0;;;::::1;::::0;;;;;;;:31;;;;;;;;;:36;;26101:66:::1;;26150:17;;-1:-1:-1::0;;;26150:17:2::1;;;;;;;;;;;26101:66;26300:21;::::0;;;:11:::1;:21;::::0;;;;;;;26293:28;;;26343:14:::1;:24:::0;;;;;26336:31;26213:3:::1;::::0;;::::1;::::0;26382:30:::1;::::0;26388:10:::1;::::0;26312:8;;26382:5:::1;:30::i;:::-;25571:853;25518:906;;;-1:-1:-1::0;26463:62:2::1;26474:9:::0;26485:20:::1;26474:9:::0;;26485:20:::1;:::i;:::-;:27;;26514:10;26463;:62::i;:::-;26592:11;::::0;-1:-1:-1;;;;;26592:11:2::1;:23;26616:15;;::::0;::::1;:8:::0;:15:::1;:::i;:::-;26592:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;452:1:4;443:10;;-1:-1:-1;;;;25186:1454:2:o;34200:392::-;34342:10;12706:18;;;;:11;:18;;;;;;;;12701:51;;12733:19;;-1:-1:-1;;;12733:19:2;;;;;;;;;;;12701:51;9411:4:::1;34369:14;:27;;:59;;;;9411:4;34400:15;:28;;34369:59;34365:107;;;34450:22;;-1:-1:-1::0;;;34450:22:2::1;;;;;;;;;;;34365:107;-1:-1:-1::0;;;;;;34483:27:2;;::::1;;::::0;;;:15:::1;:27;::::0;;;;;;;:44;;;;34538:16:::1;:28:::0;;;:46;34200:392::o;50699:1512::-;-1:-1:-1;;;;;50943:25:2;;50856:4;50943:25;;;:15;:25;;;;;:36;50856:4;;50919:6;;50943:36;;-1:-1:-1;;;;;;50943:48:2;50939:1242;;-1:-1:-1;;;;;51008:25:2;;;;;;:15;:25;;;;;:46;;;;;;-1:-1:-1;;51008:46:2;;;;;;51100:8;;51008:25;-1:-1:-1;;51060:48:2;;-1:-1:-1;;;51100:8:2;51060:48;;;;;;;;:::i;:::-;;;;;-1:-1:-1;51130:21:2;51118:8;:33;;;;;;;;:::i;:::-;;51114:138;;-1:-1:-1;;;;;51207:25:2;;;;;;:15;:25;;;;;:31;;:38;51241:4;51207:31;:38;:::i;:::-;;51114:138;50939:1242;;;-1:-1:-1;;;;;51281:25:2;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;51281:48:2;;;;;;;;;;:113;;-1:-1:-1;;;;;;51346:25:2;;;;;;:15;:25;;;;;:36;-1:-1:-1;;;;;;51346:48:2;;;-1:-1:-1;;;51346:36:2;;;;;:48;;51281:113;:177;;;;-1:-1:-1;;;;;;51422:25:2;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;51411:47:2;;;;;;;;51281:177;:234;;;;-1:-1:-1;;;;;;51478:25:2;;;;;;:15;:25;;;;;:37;-1:-1:-1;;;51478:37:2;;;;51466:49;;;;;;;;:::i;:::-;:8;:49;;;;;;;;:::i;:::-;;51281:234;:347;;;;-1:-1:-1;51536:21:2;51524:8;:33;;;;;;;;:::i;:::-;;;:103;;;;51622:4;51612:15;;;;;;51576;:25;51592:8;-1:-1:-1;;;;;51576:25:2;-1:-1:-1;;;;;51576:25:2;;;;;;;;;;;;:31;;51566:42;;;;;;:::i;:::-;;;;;;;;:61;51524:103;51263:918;;;-1:-1:-1;;;;;51640:25:2;;;;;;:15;:25;;;;;:46;;-1:-1:-1;;51640:46:2;-1:-1:-1;;;51640:46:2;;;;;;;;51263:918;;;-1:-1:-1;;;;;51720:25:2;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;51720:48:2;;;;;;;;;;:113;;-1:-1:-1;;;;;;51785:25:2;;;;;;:15;:25;;;;;:36;-1:-1:-1;;;;;;51785:48:2;;;-1:-1:-1;;;51785:36:2;;;;;:48;;;51720:113;:177;;;;-1:-1:-1;;;;;;51861:25:2;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;51850:47:2;;;;;;;;51720:177;:241;;;;-1:-1:-1;;;;;;51925:25:2;;;;;;:15;:25;;;;;:36;-1:-1:-1;;;;;;51914:47:2;;;-1:-1:-1;;;51925:36:2;;;;;51914:47;;;51720:241;:298;;;;-1:-1:-1;;;;;;51981:25:2;;;;;;:15;:25;;;;;:37;-1:-1:-1;;;51981:37:2;;;;51969:49;;;;;;;;:::i;:::-;:8;:49;;;;;;;;:::i;:::-;;51720:298;:411;;;;-1:-1:-1;52039:21:2;52027:8;:33;;;;;;;;:::i;:::-;;;:103;;;;52125:4;52115:15;;;;;;52079;:25;52095:8;-1:-1:-1;;;;;52079:25:2;-1:-1:-1;;;;;52079:25:2;;;;;;;;;;;;:31;;52069:42;;;;;;:::i;:::-;;;;;;;;:61;52027:103;51702:479;;;52165:4;52158:11;;;;;;51702:479;52198:5;52191:12;;;;50699:1512;;;;;;;:::o;38363:2449::-;38519:18;-1:-1:-1;;;;;38548:24:2;;:10;:24;38544:1007;;38685:70;;-1:-1:-1;;;38685:70:2;;38749:4;38685:70;;;4856:51:7;38657:25:2;;-1:-1:-1;;;;;38685:55:2;;;;;4829:18:7;;38685:70:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38657:98;-1:-1:-1;38896:67:2;-1:-1:-1;;;;;38896:31:2;;38928:10;38948:4;38955:7;38896:31;:67::i;:::-;38996:70;;-1:-1:-1;;;38996:70:2;;39060:4;38996:70;;;4856:51:7;38969:24:2;;-1:-1:-1;;;;;38996:55:2;;;;;4829:18:7;;38996:70:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38969:97;;39100:17;39080:16;:37;;39072:46;;;;;;39137:36;39156:17;39137:16;:36;:::i;:::-;39124:49;;38574:605;;38544:1007;;;39203:7;;-1:-1:-1;;;;;39203:7:2;39189:10;:21;39185:366;;-1:-1:-1;39429:7:2;39185:366;;;39523:22;;-1:-1:-1;;;39523:22:2;;;;;;;;;;;39185:366;39602:30;39635:29;39647:10;39659:4;39635:11;:29::i;:::-;39602:62;-1:-1:-1;39675:19:2;39697:35;39602:62;39697:10;:35;:::i;:::-;39675:57;;39747:11;39762:1;39747:16;39743:52;;39772:23;;-1:-1:-1;;;39772:23:2;;;;;;;;;;;39743:52;39932:26;39961:85;39987:22;40024:11;;39961;:85::i;:::-;-1:-1:-1;;;;;40157:25:2;;;;;;;:13;:25;;;;;;;;:41;;;;;;;;;;;:56;;;;;;40354:8;;39932:114;;-1:-1:-1;40326:57:2;;40157:41;;40354:8;39932:114;40326:27;:57::i;:::-;40536:7;;40490:130;;-1:-1:-1;;;;;40490:27:2;;;;40536:7;40562:43;;;40490:27;:130::i;:::-;40642:151;;;-1:-1:-1;;;;;29388:32:7;;;29370:51;;29452:2;29437:18;;29430:34;;;40765:13:2;29480:18:7;;;29473:34;40642:151:2;;;;;;;;;;;29358:2:7;40642:151:2;;;38514:2298;;;;38363:2449;;;;:::o;47312:2978::-;47525:15;47543:16;:8;;:16;:::i;:::-;:23;-1:-1:-1;47577:24:2;;-1:-1:-1;47604:19:2;;;;:9;:19;:::i;:::-;:26;;47577:53;;47655:12;;47645:7;:22;47641:66;;;47676:31;;-1:-1:-1;;;47676:31:2;;;;;;;;;;;47641:66;9364:2;47736:18;;;;:9;:18;:::i;:::-;:25;;:39;:86;;;;9364:2;47792:16;:30;47736:86;47718:146;;;47841:23;;-1:-1:-1;;;47841:23:2;;;;;;;;;;;47718:146;47877:17;;47978:5;:29;;;;;;;;:::i;:::-;;47974:1235;;48097:16;;;;48136:19;;;;48097:9;48136:19;:::i;:::-;48178:23;;;;:9;:23;:::i;:::-;48064:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;48036:199;;;;;;48024:211;;47974:1235;;;48266:10;48257:5;:19;;;;;;;;:::i;:::-;;48253:956;;48366:18;;;;:9;:18;:::i;:::-;48407:19;;;;:9;:19;:::i;:::-;48449:23;;;;:9;:23;:::i;:::-;48333:158;;;;;;;;;;;;;:::i;48253:956::-;48537:13;48528:5;:22;;;;;;;;:::i;:::-;;48524:685;;48590:1;48571:16;:20;48567:56;;;48600:23;;-1:-1:-1;;;48600:23:2;;;;;;;;;;;48567:56;48642:16;48662:1;48642:21;48638:560;;48831:18;;;;:9;:18;:::i;:::-;48876:16;;;;48919:19;;;;48876:9;48919:19;:::i;:::-;48965:23;;;;:9;:23;:::i;:::-;48794:217;;;;;;;;;;;;;;:::i;48638:560::-;49126:18;;;;:9;:18;:::i;:::-;49146:9;:16;;;49115:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;49083:99;;;;;;49071:111;;48638:560;49316:9;:16;;;49303:9;:29;49299:69;;49341:27;;-1:-1:-1;;;49341:27:2;;;;;;;;;;;49299:69;49734:9;49729:554;49753:7;49749:1;:11;49729:554;;;49779:20;49802:15;;;;:8;:15;:::i;:::-;49818:1;49802:18;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;49779:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;49940:11:2;;:28;;-1:-1:-1;;;49940:28:2;;49779:41;;-1:-1:-1;;;;;;49940:11:2;;:20;;-1:-1:-1;49940:28:2;;-1:-1:-1;49779:41:2;;49940:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;50025:11:2;;-1:-1:-1;;;;;50025:11:2;;-1:-1:-1;50025:23:2;;-1:-1:-1;50067:6:2;50092:16;:8;;:16;:::i;:::-;50109:1;50092:19;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;50130:9;:16;;;50025:136;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50205:3;;;;;49764:519;49729:554;;41639:1598;41797:19;;;;:9;:19;:::i;:::-;:26;;41787:6;:36;;:93;;;-1:-1:-1;41850:23:2;;;;:9;:23;:::i;:::-;:30;;41840:6;:40;;41787:93;:147;;;-1:-1:-1;41907:20:2;:9;;:20;:::i;:::-;:27;;41897:6;:37;;41787:147;:199;;;-1:-1:-1;41961:18:2;;;;:9;:18;:::i;:::-;:25;;41951:6;:35;;41787:199;41769:252;;;42005:16;;-1:-1:-1;;;;;;42005:16:2;;;;;;;;;;;41769:252;42094:9;42089:1141;42113:6;42109:1;:10;42089:1141;;;42138:11;42152:19;;;;:9;:19;:::i;:::-;42172:1;42152:22;;;;;;;:::i;:::-;;;;;;;42138:36;;42199:19;:24;42219:3;42199:24;;;;;;;;;;;42193:38;;;;;:::i;:::-;:43;;-1:-1:-1;42189:97:2;;42262:24;;-1:-1:-1;;;42262:24:2;;;;;668:25:7;;;641:18;;42262:24:2;522:177:7;42189:97:2;42411:14;;;;:9;:14;;;;;;;;42407:47;;;42434:20;;-1:-1:-1;;;42434:20:2;;;;;;;;;;;42407:47;42509:14;;;;:9;:14;;;;;;;;:21;;-1:-1:-1;;42509:21:2;42526:4;42509:21;;;42564:23;;;;:9;:23;:::i;:::-;42588:1;42564:26;;;;;;;:::i;:::-;42545:16;;;;:11;42564:26;42545:16;;;;;;;42564:26;;;;;;;;42545:45;;;42634:14;:19;;;;;;42656:12;42671:18;42656:33;42634:55;;-1:-1:-1;42742:20:2;:9;;:20;:::i;:::-;42763:1;42742:23;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;42721:44;-1:-1:-1;42793:13:2;42784:5;:22;;;;;;;;:::i;:::-;;42780:161;;-1:-1:-1;42915:10:2;42780:161;43001:55;43007:10;43019:3;43024:1;43033:18;;;;:9;:18;:::i;:::-;43052:1;43033:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;43001:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43001:5:2;;-1:-1:-1;;;43001:55:2:i;:::-;43110:3;43078:36;43082:26;43086:18;;;;:9;:18;:::i;:::-;43105:1;43086:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;43082:26::-;43078:36;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;43158:3:2;;42089:1141;;5784:256;-1:-1:-1;;;;;5869:15:2;;:9;:15;;;;;;;;;;;:19;;;;;;;;:29;;5892:6;;5869:9;:29;;5892:6;;5869:29;:::i;:::-;;;;-1:-1:-1;;5976:56:2;;;26451:25:7;;;26507:2;26492:18;;26485:34;;;6017:1:2;;-1:-1:-1;;;;;5976:56:2;;;5991:10;;5976:56;;26424:18:7;5976:56:2;;;;;;;5784:256;;;:::o;43730:3146::-;43888:7;;-1:-1:-1;;;;;44076:32:2;;;43869:16;44076:32;;;:16;:32;;;;;;43888:7;;;;;43869:16;44076:37;;44072:367;;44217:28;;;:16;:28;;;;44156:104;;44186:12;;44156:11;:104::i;:::-;44130:130;;44072:367;;;-1:-1:-1;;;;;44380:32:2;;;;;;:16;:32;;;;;;44319:108;;44349:12;;44319:11;:108::i;:::-;44293:134;;44072:367;44451:26;44480:86;44506:23;44544:11;;44480;:86::i;:::-;44451:115;-1:-1:-1;44773:38:2;;;-1:-1:-1;;;;;44908:28:2;;;;:54;;;44958:4;-1:-1:-1;;;;;44940:22:2;:14;-1:-1:-1;;;;;44940:22:2;;44908:54;44904:1965;;;45271:28;;-1:-1:-1;;;45271:28:2;;;;;668:25:7;;;45271:5:2;-1:-1:-1;;;;;45271:14:2;;;;641:18:7;;45271:28:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;45498:8:2;;45466:61;;-1:-1:-1;;;;;;45498:8:2;;-1:-1:-1;45508:18:2;45466:31;:61::i;:::-;45685:148;45739:8;45796:18;45770:23;:44;45685:31;:148::i;:::-;45863:59;45895:10;45907:14;45863:31;:59::i;:::-;45944:54;;;26451:25:7;;;45984:13:2;26507:2:7;26492:18;;26485:34;-1:-1:-1;;;;;45944:54:2;;;;;26424:18:7;45944:54:2;;;;;;;44904:1965;;;46266:8;;46238:57;;-1:-1:-1;;;;;46238:27:2;;;;46266:8;46276:18;46238:27;:57::i;:::-;46453:144;-1:-1:-1;;;;;46453:27:2;;46503:8;46534:44;;;46453:27;:144::i;:::-;46627:55;-1:-1:-1;;;;;46627:27:2;;46655:10;46667:14;46627:27;:55::i;:::-;46702:155;;;-1:-1:-1;;;;;29388:32:7;;;29370:51;;29452:2;29437:18;;29430:34;;;46829:13:2;29480:18:7;;;29473:34;46702:155:2;;;;;;;;;;;29358:2:7;46702:155:2;;;43858:3018;;;;43730:3146;;;:::o;52412:516::-;52503:9;52656:1;52652;52648:6;52644:14;52641:1;52638:21;52635:1;52631:29;52628:244;;;52762:10;52756:4;52749:24;52852:4;52846;52839:18;52628:244;-1:-1:-1;52906:3:2;52895:9;;52891:19;;52412:516::o;1251:478:5:-;1498:1;1495;1492;1489;1481:6;1477:2;1470:5;1465:35;1455:258;;1606:10;1600:4;1593:24;1694:4;1688;1681:18;1455:258;1251:478;;:::o;5393:1652::-;5667:4;5661:11;5796:10;5790:4;5783:24;5833:4;5827;5820:18;5895:2;5889:4;5882:16;5953:6;5947:4;5940:20;6652:4;6646;6640;6634;6631:1;6624:5;6617;6612:45;6276:16;6269:24;6265:1;6258:4;6252:11;6249:18;6246:48;6034:641;6007:895;;6795:10;6789:4;6782:24;6883:4;6877;6870:18;6007:895;6929:1;6923:4;6916:15;6985:4;6978:24;-1:-1:-1;;;;5393:1652:5:o;3669:1506::-;3925:4;3919:11;4054:10;4048:4;4041:24;4091:2;4085:4;4078:16;4149:6;4143:4;4136:20;4848:4;4842;4836;4830;4827:1;4820:5;4813;4808:45;4472:16;4465:24;4461:1;4454:4;4448:11;4445:18;4442:48;4230:641;4203:891;;4987:10;4981:4;4974:24;5075:4;5069;5062:18;4203:891;5115:4;5108:24;-1:-1:-1;;;3669:1506:5:o;4877:751:2:-;-1:-1:-1;;;;;5022:13:2;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;5043:6;;5022:9;:27;;5043:6;;5022:27;:::i;:::-;;;;-1:-1:-1;;5127:54:2;;;26451:25:7;;;26507:2;26492:18;;26485:34;;;-1:-1:-1;;;;;5127:54:2;;;5162:1;;5142:10;;5127:54;;26424:18:7;5127:54:2;;;;;;;-1:-1:-1;;;;;5198:14:2;;;:19;5194:426;;5256:208;;-1:-1:-1;;;5256:208:2;;;5468:47;-1:-1:-1;;;;;5256:42:2;;;5468:47;;5256:208;;5321:10;;5362:1;;5387:2;;5412:6;;5441:4;;5256:208;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5256:259:2;;5234:321;;5538:17;;-1:-1:-1;;;5538:17:2;;;;;;;;;;;5234:321;5194:426;;;-1:-1:-1;;;;;5577:16:2;;5573:47;;5602:18;;-1:-1:-1;;;5602:18:2;;;;;;;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:131:7:-;-1:-1:-1;;;;;89:31:7;;79:42;;69:70;;135:1;132;125:12;150:367;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;481:2;466:18;;;;453:32;;-1:-1:-1;;;150:367:7:o;704:131::-;-1:-1:-1;;;;;;778:32:7;;768:43;;758:71;;825:1;822;815:12;840:245;898:6;951:2;939:9;930:7;926:23;922:32;919:52;;;967:1;964;957:12;919:52;1006:9;993:23;1025:30;1049:5;1025:30;:::i;:::-;1074:5;840:245;-1:-1:-1;;;840:245:7:o;1282:348::-;1334:8;1344:6;1398:3;1391:4;1383:6;1379:17;1375:27;1365:55;;1416:1;1413;1406:12;1365:55;-1:-1:-1;1439:20:7;;-1:-1:-1;;;;;1471:30:7;;1468:50;;;1514:1;1511;1504:12;1468:50;1551:4;1543:6;1539:17;1527:29;;1603:3;1596:4;1587:6;1579;1575:19;1571:30;1568:39;1565:59;;;1620:1;1617;1610:12;1565:59;1282:348;;;;;:::o;1635:411::-;1706:6;1714;1767:2;1755:9;1746:7;1742:23;1738:32;1735:52;;;1783:1;1780;1773:12;1735:52;1823:9;1810:23;-1:-1:-1;;;;;1848:6:7;1845:30;1842:50;;;1888:1;1885;1878:12;1842:50;1927:59;1978:7;1969:6;1958:9;1954:22;1927:59;:::i;:::-;2005:8;;1901:85;;-1:-1:-1;1635:411:7;-1:-1:-1;;;;1635:411:7:o;2051:400::-;2093:3;2131:5;2125:12;2158:6;2153:3;2146:19;2183:1;2193:139;2207:6;2204:1;2201:13;2193:139;;;2315:4;2300:13;;;2296:24;;2290:31;2270:11;;;2266:22;;2259:63;2222:12;2193:139;;;2197:3;2377:1;2370:4;2361:6;2356:3;2352:16;2348:27;2341:38;2440:4;2433:2;2429:7;2424:2;2416:6;2412:15;2408:29;2403:3;2399:39;2395:50;2388:57;;;2051:400;;;;:::o;2456:220::-;2605:2;2594:9;2587:21;2568:4;2625:45;2666:2;2655:9;2651:18;2643:6;2625:45;:::i;2681:546::-;2761:6;2769;2777;2830:2;2818:9;2809:7;2805:23;2801:32;2798:52;;;2846:1;2843;2836:12;2798:52;2885:9;2872:23;2904:31;2929:5;2904:31;:::i;:::-;2954:5;-1:-1:-1;3010:2:7;2995:18;;2982:32;-1:-1:-1;;;;;3026:30:7;;3023:50;;;3069:1;3066;3059:12;3023:50;3108:59;3159:7;3150:6;3139:9;3135:22;3108:59;:::i;:::-;2681:546;;3186:8;;-1:-1:-1;3082:85:7;;-1:-1:-1;;;;2681:546:7:o;3232:367::-;3295:8;3305:6;3359:3;3352:4;3344:6;3340:17;3336:27;3326:55;;3377:1;3374;3367:12;3326:55;-1:-1:-1;3400:20:7;;-1:-1:-1;;;;;3432:30:7;;3429:50;;;3475:1;3472;3465:12;3429:50;3512:4;3504:6;3500:17;3488:29;;3572:3;3565:4;3555:6;3552:1;3548:14;3540:6;3536:27;3532:38;3529:47;3526:67;;;3589:1;3586;3579:12;3604:1085;3759:6;3767;3775;3783;3791;3799;3852:2;3840:9;3831:7;3827:23;3823:32;3820:52;;;3868:1;3865;3858:12;3820:52;3908:9;3895:23;-1:-1:-1;;;;;3933:6:7;3930:30;3927:50;;;3973:1;3970;3963:12;3927:50;4012:59;4063:7;4054:6;4043:9;4039:22;4012:59;:::i;:::-;4090:8;;-1:-1:-1;3986:85:7;-1:-1:-1;;4178:2:7;4163:18;;4150:32;-1:-1:-1;;;;;4194:32:7;;4191:52;;;4239:1;4236;4229:12;4191:52;4278:72;4342:7;4331:8;4320:9;4316:24;4278:72;:::i;:::-;4369:8;;-1:-1:-1;4252:98:7;-1:-1:-1;;4457:2:7;4442:18;;4429:32;-1:-1:-1;;;;;4473:32:7;;4470:52;;;4518:1;4515;4508:12;4470:52;4557:72;4621:7;4610:8;4599:9;4595:24;4557:72;:::i;:::-;3604:1085;;;;-1:-1:-1;3604:1085:7;;-1:-1:-1;3604:1085:7;;4648:8;;3604:1085;-1:-1:-1;;;3604:1085:7:o;4918:508::-;4995:6;5003;5011;5064:2;5052:9;5043:7;5039:23;5035:32;5032:52;;;5080:1;5077;5070:12;5032:52;5119:9;5106:23;5138:31;5163:5;5138:31;:::i;:::-;5188:5;-1:-1:-1;5245:2:7;5230:18;;5217:32;5258:33;5217:32;5258:33;:::i;:::-;4918:508;;5310:7;;-1:-1:-1;;;5390:2:7;5375:18;;;;5362:32;;4918:508::o;5431:247::-;5490:6;5543:2;5531:9;5522:7;5518:23;5514:32;5511:52;;;5559:1;5556;5549:12;5511:52;5598:9;5585:23;5617:31;5642:5;5617:31;:::i;5683:1158::-;5803:6;5811;5819;5827;5835;5843;5851;5859;5912:3;5900:9;5891:7;5887:23;5883:33;5880:53;;;5929:1;5926;5919:12;5880:53;5968:9;5955:23;5987:31;6012:5;5987:31;:::i;:::-;6037:5;-1:-1:-1;6094:2:7;6079:18;;6066:32;6107:33;6066:32;6107:33;:::i;:::-;6159:7;-1:-1:-1;6239:2:7;6224:18;;6211:32;;-1:-1:-1;6342:2:7;6327:18;;6314:32;;-1:-1:-1;6445:3:7;6430:19;;6417:33;;-1:-1:-1;6528:3:7;6513:19;;6500:33;6577:4;6564:18;;6552:31;;6542:59;;6597:1;6594;6587:12;6542:59;5683:1158;;;;-1:-1:-1;5683:1158:7;;;;;;6620:7;;-1:-1:-1;;;6700:3:7;6685:19;;6672:33;;6804:3;6789:19;6776:33;;5683:1158::o;6846:416::-;6911:6;6919;6972:2;6960:9;6951:7;6947:23;6943:32;6940:52;;;6988:1;6985;6978:12;6940:52;7027:9;7014:23;7046:31;7071:5;7046:31;:::i;:::-;7096:5;-1:-1:-1;7153:2:7;7138:18;;7125:32;7195:15;;7188:23;7176:36;;7166:64;;7226:1;7223;7216:12;7166:64;7249:7;7239:17;;;6846:416;;;;;:::o;7527:226::-;7586:6;7639:2;7627:9;7618:7;7614:23;7610:32;7607:52;;;7655:1;7652;7645:12;7607:52;-1:-1:-1;7700:23:7;;7527:226;-1:-1:-1;7527:226:7:o;7758:156::-;7818:5;7863:3;7854:6;7849:3;7845:16;7841:26;7838:46;;;7880:1;7877;7870:12;7838:46;-1:-1:-1;7902:6:7;7758:156;-1:-1:-1;7758:156:7:o;7919:155::-;7979:5;8024:2;8015:6;8010:3;8006:16;8002:25;7999:45;;;8040:1;8037;8030:12;8079:741;8210:6;8218;8226;8279:2;8267:9;8258:7;8254:23;8250:32;8247:52;;;8295:1;8292;8285:12;8247:52;8335:9;8322:23;-1:-1:-1;;;;;8360:6:7;8357:30;8354:50;;;8400:1;8397;8390:12;8354:50;8423:67;8482:7;8473:6;8462:9;8458:22;8423:67;:::i;:::-;8413:77;;;8543:2;8532:9;8528:18;8515:32;-1:-1:-1;;;;;8562:8:7;8559:32;8556:52;;;8604:1;8601;8594:12;8556:52;8627:69;8688:7;8677:8;8666:9;8662:24;8627:69;:::i;:::-;8617:79;;;8746:2;8735:9;8731:18;8718:32;8759:31;8784:5;8759:31;:::i;:::-;8809:5;8799:15;;;8079:741;;;;;:::o;8825:1405::-;9028:6;9036;9044;9052;9060;9068;9076;9129:3;9117:9;9108:7;9104:23;9100:33;9097:53;;;9146:1;9143;9136:12;9097:53;9186:9;9173:23;-1:-1:-1;;;;;9211:6:7;9208:30;9205:50;;;9251:1;9248;9241:12;9205:50;9274:67;9333:7;9324:6;9313:9;9309:22;9274:67;:::i;:::-;9264:77;;;9394:2;9383:9;9379:18;9366:32;-1:-1:-1;;;;;9413:8:7;9410:32;9407:52;;;9455:1;9452;9445:12;9407:52;9478:69;9539:7;9528:8;9517:9;9513:24;9478:69;:::i;:::-;9468:79;;;9600:2;9589:9;9585:18;9572:32;-1:-1:-1;;;;;9619:8:7;9616:32;9613:52;;;9661:1;9658;9651:12;9613:52;9700:72;9764:7;9753:8;9742:9;9738:24;9700:72;:::i;:::-;9791:8;;-1:-1:-1;9674:98:7;-1:-1:-1;;9879:2:7;9864:18;;9851:32;-1:-1:-1;;;;;9895:32:7;;9892:52;;;9940:1;9937;9930:12;9892:52;9979:72;10043:7;10032:8;10021:9;10017:24;9979:72;:::i;:::-;10070:8;;-1:-1:-1;9953:98:7;-1:-1:-1;;10155:3:7;10140:19;;10127:33;10169:31;10127:33;10169:31;:::i;:::-;10219:5;10209:15;;;8825:1405;;;;;;;;;;:::o;10235:127::-;10296:10;10291:3;10287:20;10284:1;10277:31;10327:4;10324:1;10317:15;10351:4;10348:1;10341:15;10367:945;10436:6;10489:2;10477:9;10468:7;10464:23;10460:32;10457:52;;;10505:1;10502;10495:12;10457:52;10545:9;10532:23;-1:-1:-1;;;;;10570:6:7;10567:30;10564:50;;;10610:1;10607;10600:12;10564:50;10633:22;;10686:4;10678:13;;10674:27;-1:-1:-1;10664:55:7;;10715:1;10712;10705:12;10664:55;10755:2;10742:16;-1:-1:-1;;;;;10773:6:7;10770:30;10767:56;;;10803:18;;:::i;:::-;10852:2;10846:9;10944:2;10906:17;;-1:-1:-1;;10902:31:7;;;10935:2;10898:40;10894:54;10882:67;;-1:-1:-1;;;;;10964:34:7;;11000:22;;;10961:62;10958:88;;;11026:18;;:::i;:::-;11062:2;11055:22;11086;;;11127:15;;;11144:2;11123:24;11120:37;-1:-1:-1;11117:57:7;;;11170:1;11167;11160:12;11117:57;11226:6;11221:2;11217;11213:11;11208:2;11200:6;11196:15;11183:50;11279:1;11253:19;;;11274:2;11249:28;11242:39;;;;11257:6;10367:945;-1:-1:-1;;;;10367:945:7:o;11525:1350::-;11685:6;11693;11701;11709;11717;11725;11733;11741;11794:3;11782:9;11773:7;11769:23;11765:33;11762:53;;;11811:1;11808;11801:12;11762:53;11850:9;11837:23;11869:31;11894:5;11869:31;:::i;:::-;11919:5;-1:-1:-1;11976:2:7;11961:18;;11948:32;11989:33;11948:32;11989:33;:::i;:::-;12041:7;-1:-1:-1;12099:2:7;12084:18;;12071:32;-1:-1:-1;;;;;12115:30:7;;12112:50;;;12158:1;12155;12148:12;12112:50;12197:70;12259:7;12250:6;12239:9;12235:22;12197:70;:::i;:::-;12286:8;;-1:-1:-1;12171:96:7;-1:-1:-1;;12374:2:7;12359:18;;12346:32;-1:-1:-1;;;;;12390:32:7;;12387:52;;;12435:1;12432;12425:12;12387:52;12474:72;12538:7;12527:8;12516:9;12512:24;12474:72;:::i;:::-;12565:8;;-1:-1:-1;12448:98:7;-1:-1:-1;;12653:3:7;12638:19;;12625:33;-1:-1:-1;;;;;12670:32:7;;12667:52;;;12715:1;12712;12705:12;12667:52;12754:61;12807:7;12796:8;12785:9;12781:24;12754:61;:::i;:::-;11525:1350;;;;-1:-1:-1;11525:1350:7;;-1:-1:-1;11525:1350:7;;;;;;12834:8;-1:-1:-1;;;11525:1350:7:o;13087:388::-;13155:6;13163;13216:2;13204:9;13195:7;13191:23;13187:32;13184:52;;;13232:1;13229;13222:12;13184:52;13271:9;13258:23;13290:31;13315:5;13290:31;:::i;:::-;13340:5;-1:-1:-1;13397:2:7;13382:18;;13369:32;13410:33;13369:32;13410:33;:::i;13480:606::-;13602:6;13610;13663:2;13651:9;13642:7;13638:23;13634:32;13631:52;;;13679:1;13676;13669:12;13631:52;13719:9;13706:23;-1:-1:-1;;;;;13744:6:7;13741:30;13738:50;;;13784:1;13781;13774:12;13738:50;13807:67;13866:7;13857:6;13846:9;13842:22;13807:67;:::i;:::-;13797:77;;;13927:2;13916:9;13912:18;13899:32;-1:-1:-1;;;;;13946:8:7;13943:32;13940:52;;;13988:1;13985;13978:12;13940:52;14011:69;14072:7;14061:8;14050:9;14046:24;14011:69;:::i;:::-;14001:79;;;13480:606;;;;;:::o;14091:928::-;14197:6;14205;14213;14221;14229;14237;14290:3;14278:9;14269:7;14265:23;14261:33;14258:53;;;14307:1;14304;14297:12;14258:53;14346:9;14333:23;14365:31;14390:5;14365:31;:::i;:::-;14415:5;-1:-1:-1;14472:2:7;14457:18;;14444:32;14485:33;14444:32;14485:33;:::i;:::-;14537:7;-1:-1:-1;14617:2:7;14602:18;;14589:32;;-1:-1:-1;14720:2:7;14705:18;;14692:32;;-1:-1:-1;14801:3:7;14786:19;;14773:33;-1:-1:-1;;;;;14818:30:7;;14815:50;;;14861:1;14858;14851:12;14815:50;14900:59;14951:7;14942:6;14931:9;14927:22;14900:59;:::i;15024:487::-;15101:6;15109;15117;15170:2;15158:9;15149:7;15145:23;15141:32;15138:52;;;15186:1;15183;15176:12;15138:52;15225:9;15212:23;15244:31;15269:5;15244:31;:::i;:::-;15294:5;15372:2;15357:18;;15344:32;;-1:-1:-1;15475:2:7;15460:18;;;15447:32;;15024:487;-1:-1:-1;;;15024:487:7:o;15516:380::-;15595:1;15591:12;;;;15638;;;15659:61;;15713:4;15705:6;15701:17;15691:27;;15659:61;15766:2;15758:6;15755:14;15735:18;15732:38;15729:161;;15812:10;15807:3;15803:20;15800:1;15793:31;15847:4;15844:1;15837:15;15875:4;15872:1;15865:15;16027:677;16077:3;16118:5;16112:12;16147:36;16173:9;16147:36;:::i;:::-;16214:1;16199:17;;16225:133;;;;16372:1;16367:331;;;;16192:506;;16225:133;-1:-1:-1;;16258:24:7;;16246:37;;16331:14;;16324:22;16312:35;;16303:45;;;-1:-1:-1;16225:133:7;;16367:331;16398:5;16395:1;16388:16;16445:4;16442:1;16432:18;16472:1;16486:166;16500:6;16497:1;16494:13;16486:166;;;16580:14;;16567:11;;;16560:35;16636:1;16623:15;;;;16522:4;16515:12;16486:166;;;16490:3;;16681:6;16676:3;16672:16;16665:23;;16192:506;;;;16027:677;;;;:::o;16709:373::-;16895:3;16923:38;16957:3;16949:6;16923:38;:::i;:::-;16995:6;16987;16983:2;16970:32;17056:1;17021:15;;17045:13;;;-1:-1:-1;17021:15:7;;16709:373;-1:-1:-1;;;16709:373:7:o;17087:273::-;17272:6;17264;17259:3;17246:33;17228:3;17298:16;;17323:13;;;17298:16;17087:273;-1:-1:-1;17087:273:7:o;17365:267::-;17454:6;17449:3;17442:19;17506:6;17499:5;17492:4;17487:3;17483:14;17470:43;-1:-1:-1;17558:1:7;17533:16;;;17551:4;17529:27;;;17522:38;;;;17614:2;17593:15;;;-1:-1:-1;;17589:29:7;17580:39;;;17576:50;;17365:267::o;17637:344::-;-1:-1:-1;;;;;17824:32:7;;17806:51;;17893:2;17888;17873:18;;17866:30;;;-1:-1:-1;;17913:62:7;;17956:18;;17948:6;17940;17913:62;:::i;:::-;17905:70;17637:344;-1:-1:-1;;;;;17637:344:7:o;17986:127::-;18047:10;18042:3;18038:20;18035:1;18028:31;18078:4;18075:1;18068:15;18102:4;18099:1;18092:15;18118:522;18196:4;18202:6;18262:11;18249:25;18356:2;18352:7;18341:8;18325:14;18321:29;18317:43;18297:18;18293:68;18283:96;;18375:1;18372;18365:12;18283:96;18402:33;;18454:20;;;-1:-1:-1;;;;;;18486:30:7;;18483:50;;;18529:1;18526;18519:12;18483:50;18562:4;18550:17;;-1:-1:-1;18593:14:7;18589:27;;;18579:38;;18576:58;;;18630:1;18627;18620:12;18645:518;18747:2;18742:3;18739:11;18736:421;;;18783:5;18780:1;18773:16;18827:4;18824:1;18814:18;18897:2;18885:10;18881:19;18878:1;18874:27;18868:4;18864:38;18933:4;18921:10;18918:20;18915:47;;;-1:-1:-1;18956:4:7;18915:47;19011:2;19006:3;19002:12;18999:1;18995:20;18989:4;18985:31;18975:41;;19066:81;19084:2;19077:5;19074:13;19066:81;;;19143:1;19129:16;;19110:1;19099:13;19066:81;;19339:1198;-1:-1:-1;;;;;19458:3:7;19455:27;19452:53;;;19485:18;;:::i;:::-;19514:94;19604:3;19564:38;19596:4;19590:11;19564:38;:::i;:::-;19558:4;19514:94;:::i;:::-;19634:1;19659:2;19654:3;19651:11;19676:1;19671:608;;;;20323:1;20340:3;20337:93;;;-1:-1:-1;20396:19:7;;;20383:33;20337:93;-1:-1:-1;;19296:1:7;19292:11;;;19288:24;19284:29;19274:40;19320:1;19316:11;;;19271:57;20443:78;;19644:887;;19671:608;15974:1;15967:14;;;16011:4;15998:18;;-1:-1:-1;;19707:17:7;;;19822:229;19836:7;19833:1;19830:14;19822:229;;;19925:19;;;19912:33;19897:49;;20032:4;20017:20;;;;19985:1;19973:14;;;;19852:12;19822:229;;;19826:3;20079;20070:7;20067:16;20064:159;;;20203:1;20199:6;20193:3;20187;20184:1;20180:11;20176:21;20172:34;20168:39;20155:9;20150:3;20146:19;20133:33;20129:79;20121:6;20114:95;20064:159;;;20266:1;20260:3;20257:1;20253:11;20249:19;20243:4;20236:33;19644:887;;19339:1198;;;:::o;20542:311::-;20630:19;;;20612:3;-1:-1:-1;;;;;20661:31:7;;20658:51;;;20705:1;20702;20695:12;20658:51;20741:6;20738:1;20734:14;20793:8;20786:5;20779:4;20774:3;20770:14;20757:45;20822:18;;;;20842:4;20818:29;;20542:311;-1:-1:-1;;;20542:311:7:o;20858:478::-;21105:2;21094:9;21087:21;21068:4;21131:62;21189:2;21178:9;21174:18;21166:6;21158;21131:62;:::i;:::-;21241:9;21233:6;21229:22;21224:2;21213:9;21209:18;21202:50;21269:61;21323:6;21315;21307;21269:61;:::i;:::-;21261:69;20858:478;-1:-1:-1;;;;;;;20858:478:7:o;23054:545::-;23147:4;23153:6;23213:11;23200:25;23307:2;23303:7;23292:8;23276:14;23272:29;23268:43;23248:18;23244:68;23234:96;;23326:1;23323;23316:12;23234:96;23353:33;;23405:20;;;-1:-1:-1;;;;;;23437:30:7;;23434:50;;;23480:1;23477;23470:12;23434:50;23513:4;23501:17;;-1:-1:-1;23564:1:7;23560:14;;;23544;23540:35;23530:46;;23527:66;;;23589:1;23586;23579:12;24166:1229;24388:2;24400:21;;;24373:18;;24456:22;;;-1:-1:-1;24509:2:7;24558:1;24554:14;;;24539:30;;24535:39;;;24494:18;;24597:6;-1:-1:-1;;;24649:14:7;24645:27;;;24641:41;24691:675;24705:6;24702:1;24699:13;24691:675;;;24770:22;;;-1:-1:-1;;24766:36:7;24754:49;;24842:20;;24885:27;;;24875:55;;24926:1;24923;24916:12;24875:55;24956:31;;25072:2;25061:14;;;25014:19;-1:-1:-1;;;;;25091:30:7;;25088:50;;;25134:1;25131;25124:12;25088:50;25187:6;25171:14;25167:27;25158:7;25154:41;25151:61;;;25208:1;25205;25198:12;25151:61;25235:51;25279:6;25271;25262:7;25235:51;:::i;:::-;25225:61;;;;25321:2;25313:6;25309:15;25299:25;;25353:2;25348:3;25344:12;25337:19;;24727:1;24724;24720:9;24715:14;;24691:675;;;-1:-1:-1;25383:6:7;;24166:1229;-1:-1:-1;;;;;;;24166:1229:7:o;25400:306::-;25459:6;25512:2;25500:9;25491:7;25487:23;25483:32;25480:52;;;25528:1;25525;25518:12;25480:52;25554:23;;-1:-1:-1;;;;;;25606:51:7;;25596:62;;25586:90;;25672:1;25669;25662:12;27080:127;27141:10;27136:3;27132:20;27129:1;27122:31;27172:4;27169:1;27162:15;27196:4;27193:1;27186:15;27212:1297;27336:3;27330:10;-1:-1:-1;;;;;27355:6:7;27352:30;27349:56;;;27385:18;;:::i;:::-;27414:97;27504:6;27464:38;27496:4;27490:11;27464:38;:::i;:::-;27458:4;27414:97;:::i;:::-;27560:4;27591:2;27580:14;;27608:1;27603:649;;;;28296:1;28313:6;28310:89;;;-1:-1:-1;28365:19:7;;;28359:26;28310:89;-1:-1:-1;;19296:1:7;19292:11;;;19288:24;19284:29;19274:40;19320:1;19316:11;;;19271:57;28412:81;;27573:930;;27603:649;15974:1;15967:14;;;16011:4;15998:18;;-1:-1:-1;;27639:20:7;;;27757:222;27771:7;27768:1;27765:14;27757:222;;;27853:19;;;27847:26;27832:42;;27960:4;27945:20;;;;27913:1;27901:14;;;;27787:12;27757:222;;;27761:3;28007:6;27998:7;27995:19;27992:201;;;28068:19;;;28062:26;-1:-1:-1;;28151:1:7;28147:14;;;28163:3;28143:24;28139:37;28135:42;28120:58;28105:74;;27992:201;-1:-1:-1;;;;28239:1:7;28223:14;;;28219:22;28206:36;;-1:-1:-1;27212:1297:7:o;28514:195::-;28640:3;28665:38;28699:3;28691:6;28665:38;:::i;28714:184::-;28784:6;28837:2;28825:9;28816:7;28812:23;28808:32;28805:52;;;28853:1;28850;28843:12;28805:52;-1:-1:-1;28876:16:7;;28714:184;-1:-1:-1;28714:184:7:o;28903:127::-;28964:10;28959:3;28955:20;28952:1;28945:31;28995:4;28992:1;28985:15;29019:4;29016:1;29009:15;29035:128;29102:9;;;29123:11;;;29120:37;;;29137:18;;:::i;30629:590::-;30934:6;30923:9;30916:25;30977:2;30972;30961:9;30957:18;30950:30;30897:4;31003:73;31072:2;31061:9;31057:18;31049:6;31041;31003:73;:::i;:::-;31124:9;31116:6;31112:22;31107:2;31096:9;31092:18;31085:50;31152:61;31206:6;31198;31190;31152:61;:::i;:::-;31144:69;30629:590;-1:-1:-1;;;;;;;;30629:590:7:o;31224:750::-;31589:2;31578:9;31571:21;31552:4;31615:73;31684:2;31673:9;31669:18;31661:6;31653;31615:73;:::i;:::-;31736:9;31728:6;31724:22;31719:2;31708:9;31704:18;31697:50;31770:61;31824:6;31816;31808;31770:61;:::i;:::-;31756:75;;31879:9;31871:6;31867:22;31862:2;31851:9;31847:18;31840:50;31907:61;31961:6;31953;31945;31907:61;:::i;:::-;31899:69;31224:750;-1:-1:-1;;;;;;;;;31224:750:7:o;31979:823::-;32372:3;32361:9;32354:22;32335:4;32399:74;32468:3;32457:9;32453:19;32445:6;32437;32399:74;:::i;:::-;32509:6;32504:2;32493:9;32489:18;32482:34;32564:9;32556:6;32552:22;32547:2;32536:9;32532:18;32525:50;32598:61;32652:6;32644;32636;32598:61;:::i;:::-;32584:75;;32707:9;32699:6;32695:22;32690:2;32679:9;32675:18;32668:50;32735:61;32789:6;32781;32773;32735:61;:::i;:::-;32727:69;31979:823;-1:-1:-1;;;;;;;;;;31979:823:7:o;32807:359::-;33024:2;33013:9;33006:21;32987:4;33044:73;33113:2;33102:9;33098:18;33090:6;33082;33044:73;:::i;:::-;33036:81;;33153:6;33148:2;33137:9;33133:18;33126:34;32807:359;;;;;;:::o;33697:479::-;33930:2;33919:9;33912:21;33893:4;33956:45;33997:2;33986:9;33982:18;33974:6;33956:45;:::i;:::-;34049:9;34041:6;34037:22;34032:2;34021:9;34017:18;34010:50;34077;34120:6;34112;34104;34077:50;:::i;:::-;34069:58;;;34163:6;34158:2;34147:9;34143:18;34136:34;33697:479;;;;;;;:::o;34181:125::-;34246:9;;;34267:10;;;34264:36;;;34280:18;;:::i;34311:557::-;-1:-1:-1;;;;;34570:32:7;;;34552:51;;34639:32;;34634:2;34619:18;;34612:60;34703:2;34688:18;;34681:34;;;34746:2;34731:18;;34724:34;;;34590:3;34789;34774:19;;34767:32;;;-1:-1:-1;;34816:46:7;;34842:19;;34834:6;34816:46;:::i;34873:249::-;34942:6;34995:2;34983:9;34974:7;34970:23;34966:32;34963:52;;;35011:1;35008;35001:12;34963:52;35043:9;35037:16;35062:30;35086:5;35062:30;:::i",
  "source": "// SPDX-License-Identifier: MIT\r\npragma solidity ^0.8.18;\r\n\r\n// This file is strictly provided as-is\r\n// without any express or implied guarantees, representations, or warranties\r\n// as to this file or any deployments hereof\r\n\r\n// Any users of these files are doing so at their own risk.\r\n\r\n/// @notice uses nontransferable ERC1155 NFTs with encrypted metadata to enable private asset deposits, transfers, and withdrawals. Encryption provided by Metadata Validator Oracles.\r\n\r\n// Solbase ReentrancyGuard (https://github.com/Sol-DAO/solbase/blob/main/src/utils/ReentrancyGuard.sol)\r\nimport {ReentrancyGuard} from \"./ReentrancyGuard.sol\";\r\n\r\n// Solbase SafeTransferLib (https://github.com/Sol-DAO/solbase/blob/main/src/utils/SafeTransferLib.sol)\r\nimport {SafeTransferLib} from \"./SafeTransferLib.sol\";\r\n\r\n/*///////////////////////////////////////////////////////////////\r\n                            INTERFACES\r\n//////////////////////////////////////////////////////////////*/\r\n\r\ninterface IERC20Permit_EnshroudProtocol {\r\n    function permit(\r\n        address owner,\r\n        address spender,\r\n        uint256 value,\r\n        uint256 deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external;\r\n\r\n    // DAI permit\r\n    function permit(\r\n        address holder,\r\n        address spender,\r\n        uint256 nonce,\r\n        uint256 expiry,\r\n        bool allowed,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external;\r\n\r\n\tfunction balanceOf(address owner) external view returns (uint256);\r\n}\r\n\r\ninterface IWETH {\r\n    function deposit() external payable;\r\n\r\n    function withdraw(uint256) external;\r\n}\r\n\r\ninterface IMVOStaking_EnshroudProtocol {\r\n    function awardPoints(string[] calldata mvoIDs) external;\r\n\r\n    function checkMVO(string calldata mvoID) external;\r\n\r\n    function checkMVOSig(\r\n        string calldata mvoID,\r\n        bytes calldata mvoSig,\r\n        bytes32 obHash\r\n    ) external view;\r\n}\r\n\r\n/// @notice Modern, minimalist, and gas-optimized **non-transferable** ERC1155 adaptation.\r\n/// @author Modified from Solbase's ERC1155 (https://github.com/Sol-DAO/solbase/blob/main/src/tokens/ERC1155/ERC1155.sol), removing transferability\r\n/** @dev the following were removed from the Sol-DAO implementation for non-transferability or because they are unused: ApprovalForAll() event, Unauthorized() custom error,\r\n *** 'isApprovedForAll[]' mapping, 'setApprovalForAll()', 'safeTransferFrom()', 'safeBatchTransferFrom()', 'balanceOfBatch()'; '_batchMint()'; 'batchBurn()'; 'TransferBatch' event\r\n *** therefore this is intentionally not fully compliant with the (usually transferable) ERC1155 standard */\r\nabstract contract ERC1155 {\r\n    /// -----------------------------------------------------------------------\r\n    /// Events\r\n    /// -----------------------------------------------------------------------\r\n\r\n    event TransferSingle(\r\n        address indexed operator,\r\n        address indexed from,\r\n        address indexed to,\r\n        uint256 id,\r\n        uint256 amount\r\n    );\r\n\r\n    event URI(string value, uint256 indexed id);\r\n\r\n    /// -----------------------------------------------------------------------\r\n    /// Custom Errors\r\n    /// -----------------------------------------------------------------------\r\n\r\n    error UnsafeRecipient();\r\n\r\n    error InvalidRecipient();\r\n\r\n    error LengthMismatch();\r\n\r\n    /// -----------------------------------------------------------------------\r\n    /// ERC1155 Storage\r\n    /// -----------------------------------------------------------------------\r\n\r\n    mapping(address => mapping(uint256 => uint256)) public balanceOf;\r\n\r\n    /// -----------------------------------------------------------------------\r\n    /// Metadata Logic\r\n    /// -----------------------------------------------------------------------\r\n\r\n    function uri(\r\n        string calldata metadata\r\n    ) public view virtual returns (string memory);\r\n\r\n    /// -----------------------------------------------------------------------\r\n    /// ERC165 Logic\r\n    /// -----------------------------------------------------------------------\r\n\r\n    function supportsInterface(\r\n        bytes4 interfaceId\r\n    ) public view virtual returns (bool) {\r\n        return\r\n            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\r\n            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155\r\n            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI\r\n    }\r\n\r\n    /// -----------------------------------------------------------------------\r\n    /// Internal Mint/Burn Logic\r\n    /// -----------------------------------------------------------------------\r\n\r\n    /// @param to: owning address\r\n    /// @param id: unique ID of eNFT\r\n\t/// @param amount: always 1 (quantity is specified within the eNFT)\r\n\t/// @param data: encrypted eNFT metadata\r\n    function _mint(\r\n        address to,\r\n        uint256 id,\r\n        uint256 amount,\r\n        bytes memory data\r\n    ) internal virtual {\r\n        balanceOf[to][id] += amount;\r\n\r\n        // mint event for MVO layer to detect and act upon\r\n        emit TransferSingle(msg.sender, address(0), to, id, amount);\r\n\r\n        if (to.code.length != 0) {\r\n            if (\r\n                ERC1155TokenReceiver(to).onERC1155Received(\r\n                    msg.sender,\r\n                    address(0),\r\n                    id,\r\n                    amount,\r\n                    data\r\n                ) != ERC1155TokenReceiver.onERC1155Received.selector\r\n            ) revert UnsafeRecipient();\r\n        } else if (to == address(0)) revert InvalidRecipient();\r\n    }\r\n\r\n    /// @param from: owning address burning the eNFT\r\n    /// @param id: unique ID of eNFT\r\n    /// @param amount: always 1 (results in 0 balance)\r\n    function _burn(address from, uint256 id, uint256 amount) internal virtual {\r\n        balanceOf[from][id] -= amount;\r\n\r\n        // burn event for MVO layer to detect and act upon\r\n        emit TransferSingle(msg.sender, from, address(0), id, amount);\r\n    }\r\n}\r\n\r\n/// @author Solbase (https://github.com/Sol-DAO/solbase/blob/main/src/tokens/ERC1155/ERC1155.sol)\r\n/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155/ERC1155.sol)\r\n/// @dev while the ERC1155-like tokens in this protocol are non-transferable, the below are included for minted eNFT receivers\r\nabstract contract ERC1155TokenReceiver {\r\n    function onERC1155Received(\r\n        address,\r\n        address,\r\n        uint256,\r\n        uint256,\r\n        bytes calldata\r\n    ) external virtual returns (bytes4) {\r\n        return ERC1155TokenReceiver.onERC1155Received.selector;\r\n    }\r\n\r\n    function onERC1155BatchReceived(\r\n        address,\r\n        address,\r\n        uint256[] calldata,\r\n        uint256[] calldata,\r\n        bytes calldata\r\n    ) external virtual returns (bytes4) {\r\n        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;\r\n    }\r\n}\r\n\r\n/// @notice Enshroud protocol contract\r\ncontract EnshroudProtocol is ERC1155, ERC1155TokenReceiver, ReentrancyGuard {\r\n    using SafeTransferLib for address;\r\n\r\n\t/// types of eNFT operations\r\n    enum Flag {\r\n        MintFromDeposit,\r\n        Spend,\r\n        Withdraw\r\n    }\r\n\r\n    /// @notice struct of necessary Operations Block information to properly cause eNFT mint(s)\r\n    /// @param recipients: array of addresses to receive minted eNFTs\r\n    /// @param detailsHashes: supplied by MVO layer, hash of address owner, uint256 id, address asset, uint256 amount, and (optional) bytes rand for each eNFT\r\n    /// @param inputIds: array of token IDs of eNFTs to be redeemed and burned\r\n    /// @param outputIds: array of token IDs of eNFTs to be minted -- unique and assigned randomly by the lead MVO\r\n    /// @param metadata: array of metadata strings for each corresponding eNFT ID, passed to uri function\r\n    /// @param amount: amount of tokens to which the Operations Block corresponds\r\n    /// @param obHash: keccak256 hash of the Operations Block\r\n    /// @dev each array must be in the same corresponding order\r\n    struct OpsInfo {\r\n        address[] recipients;\r\n        bytes32[] detailsHashes;\r\n        uint256[] inputIds;\r\n        uint256[] outputIds;\r\n        string[] metadata;\r\n        uint256 amount;\r\n        bytes32 obHash;\r\n    }\r\n\r\n    /// @notice 'mvoSigs' is an array of MVO signatures provided by the MVO server (first is lead MVO); 'mvoIDs' are the IDs of the MVOs, the first of which is the lead MVO which receives the deposit message\r\n    struct MVOinfo {\r\n        bytes[] mvoSigs;\r\n        string[] mvoIDs;\r\n    }\r\n\r\n\t/// types of approvals handled by _isRequestApproved()\r\n\tenum ApprovalTypes { MVOStaking, GreyList, Auditor, Treasury, DaoPool }\r\n\r\n    /// @notice to track admin update requests; addresses truncated to bytes8 for size/gas considerations\r\n    struct Requests {\r\n        bytes8 requester1;\r\n        bytes8 requester2;\r\n\t\tApprovalTypes requestType;\r\n\t\tbytes audID;\r\n    }\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            VARIABLES\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    /// @dev to enable dai-pattern permit (ETH mainnet, possibly elsewhere)\r\n\taddress internal immutable daiToken;\r\n\r\n    // max limit for dynamic arrays\r\n    uint256 internal constant ARRAY_LIMIT = 20;\r\n    uint256 internal constant FEE_LIMIT = 5e17;\r\n    uint256 internal constant WAD = 1e18;\r\n\r\n    address internal immutable weth;\r\n    uint256 public immutable confirmationBlocks;\r\n\r\n    address payable public daoPool;\r\n    address payable public treasury;\r\n\r\n    string public baseURI;\r\n\r\n    uint256 public requiredSigs;\r\n\r\n    /// @notice initial treasury fee is 5%. To remove, DAO voting app (once added as admin) and two other admins can vote to change treasury address to DAO pool\r\n    uint256 public treasuryFee = 5e16;\r\n\r\n    IMVOStaking_EnshroudProtocol internal iMVOStaking;\r\n    IWETH internal immutable iWeth;\r\n\r\n    mapping(address => Requests) internal updateRequested;\r\n    mapping(address => bool) public adminStatus;\r\n    /// @notice maps a user to a mapping of tokenContract to amount deposited in this contract\r\n    mapping(address => mapping(address => uint256)) public assetBalances;\r\n    mapping(address => uint256) public assetDepositFee;\r\n    mapping(address => uint256) public assetWithdrawFee;\r\n    /// @notice maps auditor Id to their address. Zero address means no such auditor exists.\r\n    mapping(string => address) public auditors;\r\n    /// @notice maps an id number to a bool of whether such id has been used for an eNFT\r\n    mapping(uint256 => bool) internal nftIdUsed;\r\n    /// @notice maps an eNFT's id number to its detailsHash\r\n    mapping(uint256 => bytes32) internal detailsHash;\r\n    /// @notice maps an eNFT's id number to error string; contains the AudId of the Auditor node who so marked it, and may contain a reason code.\r\n    mapping(uint256 => string) public idToAuditorGreylist;\r\n    /// @notice sets dwell time for an eNFT before redemption by mapping eNFT id to (mint block.number + 'confirmationBlocks')\r\n    mapping(uint256 => uint256) public enftUnlockTime;\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            EVENTS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    /// certain events excluded for contract size considerations, such as unlikely/rare variable updates (iMVOStaking, treasury, etc.)\r\n\r\n    event AdminUpdated(address admin, bool status);\r\n\r\n    event AuditorUpdated(address auditor, string audId);\r\n\r\n    event DepositERC20(\r\n        address indexed sender,\r\n        address tokenContract,\r\n        uint256 amount,\r\n        uint256 chainId\r\n    );\r\n\r\n    event DepositETH(\r\n        address indexed sender,\r\n        uint256 weiAmount,\r\n        uint256 chainId\r\n    );\r\n\r\n    event GreyListAdd(string audId, uint256[] ids);\r\n\r\n    event GreyListDeletion(uint256 id);\r\n\r\n    event WithdrawERC20(\r\n        address indexed withdrawer,\r\n        address tokenContract,\r\n        uint256 amount,\r\n        uint256 chainId\r\n    );\r\n\r\n    event WithdrawETH(\r\n        address indexed withdrawer,\r\n        uint256 weiAmount,\r\n        uint256 chainId\r\n    );\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            MODIFIERS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    /// @notice requires \"_addr\" to have a true 'adminStatus' mapping\r\n    /// @dev implemented in this manner to allow external contracts to pass an address (i.e. MVOStaking) rather than assuming msg.sender\r\n    modifier onlyAdmin(address _addr) {\r\n        if (!adminStatus[_addr]) revert Enshroud_NotAdmin();\r\n        _;\r\n    }\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            ERRORS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    error Enshroud_AmountMismatch();\r\n    error Enshroud_ArrayTooLong();\r\n    error Enshroud_ENFTStillLocked();\r\n    error Enshroud_FeeTooLarge();\r\n    error Enshroud_Greylisted(uint256 id); // ID number of greylisted eNFT\r\n    error Enshroud_HashDoesNotMatch();\r\n    error Enshroud_InvalidID();\r\n    error Enshroud_MVOSignaturesMissing();\r\n    error Enshroud_NoENFT();\r\n    error Enshroud_NotAuditor();\r\n    error Enshroud_NotAdmin();\r\n    error Enshroud_OnlyWETH();\r\n    error Enshroud_ZeroMsgValue();\r\n\terror Enshroud_OnlyDAOPool();\r\n    error MulWadFailed();\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            FUNCTIONS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    /// @param _treasury: treasury address to receive 5% of deposit and withdraw fees for project operations.\r\n    /// @param _weth: token contract address for WETH. Immutable. 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 for WETH9 on ETH mainnet.\r\n    /// @param _dai: token contract address for DAI. Immutable. 0x6B175474E89094C44Da98b954EedeAC495271d0F for DAI on ETH mainnet.\r\n    /// @param _initialAdmins: array of initial addresses with admin status. Should be at least 3 total initial admins, in order to initialise the MVOStaking address\r\n    /// @param _depositFee: initial per-asset percentage fee from user upon successful shielding, in 18 decimals (which also corresponds to wei). Must be < 5e17.\r\n    /// @param _withdrawFee: initial per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals (which also corresponds to wei). Must be < 5e17.\r\n    /// @param _requiredSigs: immutable required number of MVO signatures for a valid Operations Block\r\n    /// @param _confBlocks: set immutable variable 'confirmationBlocks', which provides the minimum \"dwell time\" for an eNFT before redemption\r\n    /// @param _baseUri: baseURI for eNFTs, which does not operate as a normal \"baseURI\" but as a notification to check the event log of this protocol contract for the eNFT's id. This constructor-passed baseURI also removes the need for a uriFetcher\r\n    /// @dev note math of fees. Currently a 5e16 fee corresponds to 5%, as all fees are calculated with a denominator of 1e18.\r\n    constructor(\r\n        address payable _treasury,\r\n        address _weth,\r\n        address _dai,\r\n        address[] memory _initialAdmins,\r\n        uint256 _depositFee,\r\n        uint256 _withdrawFee,\r\n        uint256 _requiredSigs,\r\n        uint256 _confBlocks,\r\n        string memory _baseUri\r\n    ) payable {\r\n        if (_depositFee >= FEE_LIMIT || _withdrawFee >= FEE_LIMIT)\r\n            revert Enshroud_FeeTooLarge(); // cannot have 50% or greater for either fee\r\n        treasury = _treasury;\r\n        weth = _weth;\r\n\t\tdaiToken = _dai;\r\n        confirmationBlocks = _confBlocks;\r\n        baseURI = _baseUri;\r\n        assetDepositFee[address(0)] = _depositFee;\r\n        assetWithdrawFee[address(0)] = _withdrawFee;\r\n        requiredSigs = _requiredSigs;\r\n        adminStatus[address(this)] = true;\r\n        adminStatus[_treasury] = true;\r\n        iWeth = IWETH(_weth);\r\n        for (uint256 i = 0; i < _initialAdmins.length; ) {\r\n            adminStatus[_initialAdmins[i]] = true;\r\n            unchecked {\r\n                ++i;\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @dev address(this) accepts ETH only from the WETH contract; 'depositEth()' must be used for ETH deposits, as ETH sent directly to address(this) will not cause an eNFT mint (and thus its ability to be eventually withdrawn)\r\n    receive() external payable {\r\n        if (msg.sender != weth) revert Enshroud_OnlyWETH();\r\n    }\r\n\r\n    /// @notice initialise (or replace) the MVOStaking contract address, by three different admins\r\n    /// @dev must be set after mvoStaking contract is deployed, and before the protocol is used\r\n    /// @param _mvoStaking: contract address for MVO storage and logic\r\n    function setMVOStakingAddress(\r\n        address _mvoStaking\r\n    ) external onlyAdmin(msg.sender) {\r\n        bytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n        if (_isRequestApproved(_mvoStaking, _caller, ApprovalTypes.MVOStaking, \"\")) {\r\n            // only set or update MVOStaking address and interface upon third different admin's call, to thwart a single malicious admin\r\n            adminStatus[_mvoStaking] = true;\r\n            iMVOStaking = IMVOStaking_EnshroudProtocol(_mvoStaking);\r\n\r\n            // reset after variable update\r\n            delete updateRequested[_mvoStaking];\r\n        }\r\n    }\r\n\r\n    /// @notice deposit ETH/applicable native token. Msg.value is amount of deposit, which is in wei (18 decimals).\r\n    /// @dev deposited ETH is immediately converted to WETH to address(this) (except for deposit fee sent to treasury and daoPool, which remains in ETH)\r\n    /// @param _depositor: address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)\r\n    function depositEth(address _depositor) external payable nonReentrant {\r\n        if (msg.value == 0) revert Enshroud_ZeroMsgValue();\r\n\r\n        uint256 _depositFeeAmount = _mulWadDown(\r\n            msg.value,\r\n            assetDepositFee[address(0)]\r\n        );\r\n        uint256 _treasuryFeeAmount = _mulWadDown(\r\n            _depositFeeAmount,\r\n            treasuryFee\r\n        );\r\n        uint256 _netDeposit;\r\n\r\n        unchecked {\r\n            // will not underflow due to preceding _depositFeeAmount division operation (no fee can be >= 5e17)\r\n            _netDeposit = msg.value - _depositFeeAmount;\r\n            // add to deposit's 'assetBalances'\r\n            assetBalances[_depositor][weth] += _netDeposit;\r\n        }\r\n\r\n        // deposit msg.value - deposit fees to the WETH contract, corresponding WETH sent to address(this) -- number of WETH tokens mirrors amount of wei\r\n        iWeth.deposit{value: _netDeposit}();\r\n\r\n        // send respective deposit fees to treasury and daoPool\r\n        unchecked {\r\n            SafeTransferLib.safeTransferETH(treasury, _treasuryFeeAmount);\r\n            // will not underflow due to preceding _treasuryFeeAmount division operation (no fee can be >= 5e17)\r\n            SafeTransferLib.safeTransferETH(\r\n                daoPool,\r\n                _depositFeeAmount - _treasuryFeeAmount\r\n            );\r\n        }\r\n        emit DepositETH(_depositor, _netDeposit, block.chainid);\r\n    }\r\n\r\n    /// @notice deposit ERC20-compatible tokens after '_depositor' approved address(this) for '_amount' of tokens in the '_tokenContract'\r\n    /// @dev _amount of tokens must first be approved for transferFrom by address(this). While there is no token validity check here, the MVO layer will check when later generating operations block\r\n    /// @param _depositor: address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)\r\n    /// @param _tokenContract: ERC20-compatible token contract address\r\n    /// @param _amount: amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())\r\n    function depositTokens(\r\n        address _depositor,\r\n        address _tokenContract,\r\n        uint256 _amount\r\n    ) external nonReentrant {\r\n        // deposit fee is either the global amount (if no specific assetDepositFee set) or specific amount for the _tokenContract\r\n        if (assetDepositFee[_tokenContract] == 0) {\r\n            _depositTokens(\r\n                _depositor,\r\n                _tokenContract,\r\n                _amount,\r\n                assetDepositFee[address(0)]\r\n            );\r\n        } else {\r\n            _depositTokens(\r\n                _depositor,\r\n                _tokenContract,\r\n                _amount,\r\n                assetDepositFee[_tokenContract]\r\n            );\r\n        }\r\n    }\r\n\r\n    /// @notice deposit an ERC20-compatible asset which supports gasless ERC20Permit via EIP2612 to approve this address for transferFrom msg.sender\r\n    /// @param _tokenContract: ERC20-compatible token contract address\r\n    /// @param _depositor: address of depositor, to whom the EIP712 signature corresponds (often, msg.sender)\r\n    /// @param _amount: amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())\r\n    /// @param _nonce: user's nonce on the erc20 contract, for replay protection\r\n    /// @param _deadline: deadline for permit approval usage\r\n    /// @param v: ECDSA sig param\r\n    /// @param r: ECDSA sig param\r\n    /// @param s: ECDSA sig param\r\n    function depositTokensWithPermit(\r\n        address _tokenContract,\r\n        address _depositor,\r\n        uint256 _amount,\r\n        uint256 _nonce,\r\n        uint256 _deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external nonReentrant {\r\n        // will revert if the permit is unsuccessful or _tokenContract doesn't support it\r\n        if (_tokenContract == daiToken) {\r\n            IERC20Permit_EnshroudProtocol(_tokenContract).permit(\r\n                _depositor,\r\n                address(this),\r\n                _nonce,\r\n                _deadline,\r\n                true,\r\n                v,\r\n                r,\r\n                s\r\n            );\r\n        } else {\r\n            IERC20Permit_EnshroudProtocol(_tokenContract).permit(\r\n                _depositor,\r\n                address(this),\r\n                _amount,\r\n                _deadline,\r\n                v,\r\n                r,\r\n                s\r\n            );\r\n        }\r\n\r\n        // deposit fee is either the global amount (if no specific assetDepositFee set) or specific amount for the _tokenContract\r\n        uint256 _depositFee = assetDepositFee[_tokenContract];\r\n        if (_depositFee == 0) {\r\n            _depositTokens(\r\n                msg.sender,\r\n                _tokenContract,\r\n                _amount,\r\n                assetDepositFee[address(0)]\r\n            );\r\n        } else {\r\n            _depositTokens(msg.sender, _tokenContract, _amount, _depositFee);\r\n        }\r\n    }\r\n\r\n    /// @notice called by an address which has already deposited assets into this contract to mintENFTs based on some amount of those assets up to msg.sender's 'assetBalances'\r\n    /// @param _opsInfo: OpsInfo struct containing all of the necessary Operations Block information\r\n    /// @param _mvoInfo: MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata\r\n    /// @param _tokenContract: ERC20-compatible token contract address; pass the 'weth' address to mint an eNFT for ETH deposits\r\n    /// @dev because msg.sender is used to check the 'assetBalances' mapping (to prevent spoofing on a _depositor variable), other contracts using this function will have to use delegatecall\r\n    function mintENFTsFromDeposit(\r\n        OpsInfo calldata _opsInfo,\r\n        MVOinfo calldata _mvoInfo,\r\n        address _tokenContract\r\n    ) external {\r\n        if (assetBalances[msg.sender][_tokenContract] < _opsInfo.amount)\r\n            revert Enshroud_AmountMismatch();\r\n        unchecked {\r\n            assetBalances[msg.sender][_tokenContract] -= _opsInfo.amount;\r\n        }\r\n        // validate inputs\r\n        _validateInputs(_opsInfo, _mvoInfo, Flag.MintFromDeposit);\r\n        // mint eNFTs\r\n        _mintENFTs(_opsInfo, _opsInfo.outputIds.length, Flag.MintFromDeposit);\r\n\r\n        // on success, award points to relevant MVOs\r\n        iMVOStaking.awardPoints(_mvoInfo.mvoIDs);\r\n    }\r\n\r\n    /// @notice for a holder of eNFT(s) to spend their eNFT(s) (after receiving new OperationsBlock) for new eNFT(s) to be subsequently minted, without publicly compromising the corresponding asset or amount in the subsequently minted eNFTs\r\n    /// @dev only necessary to check msg.sender's balanceOf to burn the spent eNFT -- the new eNFTs will be produced by calling _mintNewENFTs(). Call only after new OperationsBlock received for subsequent eNFT mints.\r\n    /// @param _enftInfo: OpsInfo struct containing all of the necessary OperationsBlock information to mint new eNFTs\r\n    /// @param _mvoInfo: MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs\r\n    function spendENFTs(\r\n        OpsInfo calldata _enftInfo,\r\n        MVOinfo calldata _mvoInfo\r\n    ) external nonReentrant {\r\n        // check inputs\r\n        _validateInputs(_enftInfo, _mvoInfo, Flag.Spend);\r\n\r\n        // the length of each array in '_enftInfo' is checked in '_mintENFTs()' rather than here for efficiency\r\n        for (uint256 x = 0; x < _enftInfo.inputIds.length; ) {\r\n            uint256 _spendID = _enftInfo.inputIds[x];\r\n            if (enftUnlockTime[_spendID] > block.number)\r\n                revert Enshroud_ENFTStillLocked();\r\n            if (bytes(idToAuditorGreylist[_spendID]).length != 0)\r\n                revert Enshroud_Greylisted(_spendID); // ensure each _spendID isn't greylisted by checking if the mapped string has a length of 0 when cast to bytes\r\n\r\n            /// @dev entire transaction will revert if msg.sender does not have corresponding eNFT for a _spendID\r\n            if (balanceOf[msg.sender][_spendID] == 0) revert Enshroud_NoENFT();\r\n\r\n            unchecked {\r\n                ++x;\r\n            }\r\n\r\n            // delete mapping and burn eNFT\r\n            delete detailsHash[_spendID];\r\n            delete enftUnlockTime[_spendID];\r\n            _burn(msg.sender, _spendID, 1);\r\n        }\r\n\r\n        // mint new eNFTs\r\n        _mintENFTs(_enftInfo, _enftInfo.recipients.length, Flag.Spend);\r\n\r\n        // on success, award points to relevant MVOs\r\n        iMVOStaking.awardPoints(_mvoInfo.mvoIDs);\r\n    }\r\n\r\n    /// @notice for eNFT holder to redeem their eNFT(s) for asset withdrawal via their decrypted eNFT metadata\r\n    /// @param _opsInfo: OpsInfo struct containing all of the necessary Operations Block information\r\n    /// @param _mvoInfo: MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs\r\n    /// @param _amounts: array of amounts of tokens/asset requested for withdrawal, in order by _id\r\n    /// @param _rand: array of optional randomly generated bytes, represented in base64, generated client-side.\r\n    /// @param _tokenContract: token contract address requested for withdraw. Provide zero address for ETH/native token withdrawal.\r\n    /// @dev caller will be able to access decrypted eNFT metadata off chain in order to supply info to this function\r\n    function redeemENFTsAndWithdraw(\r\n        OpsInfo calldata _opsInfo,\r\n        MVOinfo calldata _mvoInfo,\r\n        uint256[] calldata _amounts,\r\n        bytes16[] calldata _rand,\r\n        address _tokenContract\r\n    ) external nonReentrant {\r\n        // counter for amount actually being redeemed from eNFTs\r\n        uint256 _amt;\r\n\r\n        uint256 _redeems = _opsInfo.inputIds.length;\r\n\r\n        if (_redeems != _rand.length || _redeems != _amounts.length)\r\n            revert LengthMismatch();\r\n\r\n        // check inputs\r\n        _validateInputs(_opsInfo, _mvoInfo, Flag.Withdraw);\r\n\r\n        for (uint256 x = 0; x < _redeems; ) {\r\n            uint256 _xId = _opsInfo.inputIds[x];\r\n            if (balanceOf[msg.sender][_xId] == 0) revert Enshroud_NoENFT();\r\n            if (enftUnlockTime[_xId] > block.number)\r\n                revert Enshroud_ENFTStillLocked();\r\n            if (bytes(idToAuditorGreylist[_xId]).length != 0)\r\n                revert Enshroud_Greylisted(_xId); // ensure _id[x] isn't greylisted by checking if the mapped string has a length of 0 when cast to bytes\r\n\r\n            // compare hash of each redemption information against detailsHash mapping created when eNFT was minted\r\n            if (\r\n                detailsHash[_xId] !=\r\n                keccak256(\r\n                    abi.encode(\r\n                        msg.sender,\r\n                        _xId,\r\n                        _tokenContract,\r\n                        _amounts[x],\r\n                        _rand[x]\r\n                    )\r\n                )\r\n            ) revert Enshroud_HashDoesNotMatch();\r\n\r\n            // burn eNFT and delete mappings\r\n            delete detailsHash[_xId];\r\n            delete enftUnlockTime[_xId];\r\n            _burn(msg.sender, _xId, 1);\r\n\r\n            unchecked {\r\n                _amt += _amounts[x]; // detailsHash condition check prevents invalidly high _amount value and thus overflow\r\n                ++x;\r\n            }\r\n        }\r\n\r\n        // revert if the total amount of tokens/asset (across all eNFTs being redeemed) requesting for withdraw is higher than the actual total amount to which the eNFTs correspond\r\n        uint256 _amountTotal = _opsInfo.amount;\r\n        if (_amt < _amountTotal) revert Enshroud_AmountMismatch();\r\n\r\n        // if the user wants to withdraw only part of the total redemption amount, mint an eNFT to msg.sender (per the _opsInfo struct) for the difference by calling '_mintENFTs()'\r\n        /// @dev all relevant members (recipients, detailsHashes, outputIds, metadata) of the _opsInfo struct will have a length of 1, the number of mints is 1, and the Flag value is Withdraw\r\n        if (_amt > _amountTotal) _mintENFTs(_opsInfo, 1, Flag.Withdraw);\r\n\r\n        _withdraw(_amountTotal, msg.sender, _tokenContract);\r\n\r\n        // on success, award points to relevant MVOs\r\n        iMVOStaking.awardPoints(_mvoInfo.mvoIDs);\r\n    }\r\n\r\n    /// @notice for an auditor to change eNFT(s) greylist status\r\n    /// @param _audId: ID of the auditor calling this function\r\n    /// @param _ids: array of eNFT IDs for which the auditor is altering greylist status\r\n    /// @param _reasons: array of strings corresponding to the reason for each respective '_ids' greylisting\r\n    function auditorGreyList(\r\n        string calldata _audId,\r\n        uint256[] calldata _ids,\r\n        string[] calldata _reasons\r\n    ) external {\r\n        if (msg.sender != auditors[_audId]) revert Enshroud_NotAuditor();\r\n        if (_ids.length > ARRAY_LIMIT) revert Enshroud_ArrayTooLong();\r\n        if (_ids.length != _reasons.length) revert LengthMismatch();\r\n\r\n        for (uint256 i = 0; i < _ids.length; ) {\r\n            uint256 _id = _ids[i];\r\n            // store reason only if no value is set\r\n            if (bytes(idToAuditorGreylist[_id]).length == 0)\r\n            \tidToAuditorGreylist[_id] = _reasons[i];\r\n\r\n            // limited to ARRAY_LIMIT so will not overflow\r\n            unchecked {\r\n                ++i;\r\n            }\r\n        }\r\n\r\n        // emit event with all of the greylisted IDs\r\n        emit GreyListAdd(_audId, _ids);\r\n    }\r\n\r\n    /// @notice upon call by three admins, remove an eNFT's greylist status\r\n    /// @param _id: ID of greylisted eNFT, to be removed from greylist\r\n    function removeGreylistStatus(uint256 _id) external onlyAdmin(msg.sender) {\r\n        // truncate and cast '_id' to type address for updateRequests mapping; unlikely to collide with other addresses\r\n        address _addr = address(uint160(_id));\r\n        bytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n        if (_isRequestApproved(_addr, _caller, ApprovalTypes.GreyList, \"\")) {\r\n            // only remove greylist status upon third different admin's call, to thwart a single malicious admin\r\n            delete idToAuditorGreylist[_id];\r\n\r\n            // reset after greylist update\r\n            delete updateRequested[_addr];\r\n            emit GreyListDeletion(_id);\r\n        }\r\n    }\r\n\r\n    /// @notice for three admins to update an auditor's status\r\n    /// @param _addr: address of auditor, or zero address to remove an auditor\r\n    /// @param _audId: ID of the auditor being updated by admin\r\n    function updateAuditor(\r\n        address _addr,\r\n        string calldata _audId\r\n    ) external onlyAdmin(msg.sender) {\r\n\t\trequire(bytes(_audId).length > 0);\r\n        bytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n        if (_isRequestApproved(_addr, _caller, ApprovalTypes.Auditor, _audId)) {\r\n            // only grant auditor update upon third different admin's call, to thwart a single malicious admin\r\n            auditors[_audId] = _addr;\r\n\r\n            // reset after auditor update\r\n            delete updateRequested[_addr];\r\n            emit AuditorUpdated(_addr, _audId);\r\n        }\r\n    }\r\n\r\n    /// @notice admin may designate new fee award amounts globally (pass address(0) as _tokenAddr), or token-specifically. All fees should correspond to 18 decimals regardless of underlying token contact decimal amount\r\n    /** @dev if a 0 fee for a certain asset is desired, set that fee to 1 without decimals, as checks for an asset-specific fee in other functions\r\n     *** will use the global fees if the mapping returns a 0 for that asset. If one of the two fees should remain unchanged, pass the existing value */\r\n    /// @param _tokenAddr: address of token whose fees are being updated. Leave as zero address for global changes (native token always has global fees)\r\n    /// @param _newDepositFee: new per-asset percentage fee from user upon successful shielding, in 18 decimals. Must be < 5e17.\r\n    /// @param _newWithdrawFee: new per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals. Must be < 5e17.\r\n    function updateFees(\r\n        address _tokenAddr,\r\n        uint256 _newDepositFee,\r\n        uint256 _newWithdrawFee\r\n    ) external onlyAdmin(msg.sender) {\r\n        if (_newDepositFee >= FEE_LIMIT || _newWithdrawFee >= FEE_LIMIT)\r\n            revert Enshroud_FeeTooLarge();\r\n        assetDepositFee[_tokenAddr] = _newDepositFee;\r\n        assetWithdrawFee[_tokenAddr] = _newWithdrawFee;\r\n    }\r\n\r\n    /// @notice allows an admin to designate another admin or revoke an active admin; can be used in event of malicious admin/exploit, to remove initial admins, add DAO voting addresses, etc.\r\n    /// @param _addr: address whose admin status is being updated\r\n    /// @param _status: true for admin status grant, false for revocation\r\n    function updateAdmin(\r\n        address _addr,\r\n        bool _status\r\n    ) external onlyAdmin(msg.sender) {\r\n        adminStatus[_addr] = _status;\r\n        emit AdminUpdated(_addr, _status);\r\n    }\r\n\r\n    /// @notice upon agreement of >= 3 admins, designate a new treasury contract address, including to DAO governance. adminStatus mapping also updated accordingly.\r\n    /** @dev in case of treasury exploit or subsequently deployed treasury contract. Note this also uses the updateRequests mapping,\r\n     ** as a new treasury will also receive admin status, and no issue (though unnecessary) if the new treasury address is passed as a new admin first */\r\n    /// @param _newTreasury: new treasury address\r\n    function updateTreasury(\r\n        address payable _newTreasury\r\n    ) external onlyAdmin(msg.sender) {\r\n        bytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n        if (_isRequestApproved(_newTreasury, _caller, ApprovalTypes.Treasury, \"\")) {\r\n            // only grant treasury update upon third different admin's call, to thwart a single malicious admin\r\n            adminStatus[_newTreasury] = true;\r\n            // remove admin status of prior treasury address and update treasury variable\r\n            delete adminStatus[treasury];\r\n            treasury = _newTreasury;\r\n\r\n            // reset after treasury variable update\r\n            delete updateRequested[_newTreasury];\r\n        }\r\n    }\r\n\r\n    /// @notice upon agreement of >= 3 admins, designate a new Dao Pool contract address, including to DAO governance. adminStatus mapping also updated accordingly.\r\n    /** @dev in case of exploit or subsequently deployed DAO contract. Note this also uses the updateRequests mapping,\r\n     ** as a new daoPool will also receive admin status, and no issue (though unnecessary) if the new daoPool address is passed as a new admin first */\r\n    /// @param _newDaoPool: new DAO Pool address\r\n    function updateDaoPool(\r\n        address payable _newDaoPool\r\n    ) external onlyAdmin(msg.sender) {\r\n        bytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n        if (_isRequestApproved(_newDaoPool, _caller, ApprovalTypes.DaoPool, \"\"))\r\n\t\t{\r\n            // only grant daoPool update upon third different admin's call, to thwart a single malicious admin\r\n            adminStatus[_newDaoPool] = true;\r\n\r\n            // remove admin status of prior daoPool address and update daoPool variable\r\n            delete adminStatus[daoPool];\r\n            daoPool = _newDaoPool;\r\n\r\n            // reset after daoPool variable update\r\n            delete updateRequested[_newDaoPool];\r\n        }\r\n    }\r\n\r\n    /// @param _metadata: eNFT token metadata\r\n    /// @return uri for the supplied '_metadata'; see notes on baseURI in the constructor natSpec\r\n    function uri(\r\n        string calldata _metadata\r\n    ) public view override returns (string memory) {\r\n        return string.concat(baseURI, _metadata);\r\n    }\r\n\r\n    /// @notice internal function which causes all necessary token and fee transfers upon valid 'depositTokens()' or 'depositTokensWithPermit()' call\r\n    /// @param _depositor: depositing address (msg.sender unless called by daoPool)\r\n    /// @param _tokenContract: token contract address, ERC20 compliance (including permit, if applicable) checks completed in preceding function call\r\n    /// @param _amount: amount of tokens deposited\r\n    /// @param _fee: deposit fee for _tokenContract\r\n    function _depositTokens(\r\n        address _depositor,\r\n        address _tokenContract,\r\n        uint256 _amount,\r\n        uint256 _fee\r\n    ) internal {\r\n\t\tuint256 _netAmount;\r\n\r\n\t\tif (msg.sender == _depositor) {\r\n\t\t\t// account for possibility this ERC20 is fee-on-transfer or deflationary\r\n\t\t\tuint256 _ourBalanceBefore = IERC20Permit_EnshroudProtocol(_tokenContract).balanceOf(address(this));\r\n        \t/// @dev safeTransferFrom will revert on failure (for example if lacking proper permit or approve() from '_depositor')\r\n        \t_tokenContract.safeTransferFrom(_depositor, address(this), _amount);\r\n\t\t\tuint256 _ourBalanceAfter = IERC20Permit_EnshroudProtocol(_tokenContract).balanceOf(address(this));\r\n\t\t\trequire(_ourBalanceAfter >= _ourBalanceBefore);\r\n\t\t\t_netAmount = _ourBalanceAfter - _ourBalanceBefore;\r\n\t\t} else if (msg.sender == daoPool) {\r\n\t\t\t/// @dev occurs when called via DAOPool.claimTokenYieldAsENFTs()\r\n\t\t\t/// in this case DAOPool has already safeTransfer'd the tokens to this contract and accounted for any fee-on-transfer issues\r\n\t\t\t_netAmount = _amount;\r\n\t\t} else {\r\n\t\t\t/// @dev third-party deposits are not otherwise permitted\r\n\t\t\trevert Enshroud_OnlyDAOPool();\r\n\t\t}\r\n\r\n\t\t// calculate net deposit after fees\r\n        uint256 _tokenDepositFeeAmount = _mulWadDown(_netAmount, _fee);\r\n        uint256 _netDeposit = _netAmount - _tokenDepositFeeAmount;\r\n        if (_netDeposit == 0) revert Enshroud_ZeroMsgValue();\r\n\r\n        // transfer tokenDepositFeeAmount for token to treasury and daoPool and retain net deposit for eventual withdrawal\r\n        uint256 _treasuryFeeAmount = _mulWadDown(\r\n            _tokenDepositFeeAmount,\r\n            treasuryFee\r\n        );\r\n\r\n        unchecked {\r\n            // add to _depositor's 'assetBalances' for '_tokenContract'\r\n            assetBalances[_depositor][_tokenContract] += _netDeposit;\r\n\r\n\t\t\t// will not underflow due to preceding _treasuryFeeAmount division operation (no fee can be >= 5e17)\r\n\t\t\t_tokenContract.safeTransfer(treasury, _treasuryFeeAmount);\r\n\r\n            // will not underflow due to _tokenDepositFeeAmount division operation above\r\n            _tokenContract.safeTransfer(\r\n                daoPool,\r\n                _tokenDepositFeeAmount - _treasuryFeeAmount\r\n            );\r\n\r\n            emit DepositERC20(\r\n                _depositor,\r\n                _tokenContract,\r\n                _netDeposit,\r\n                block.chainid\r\n            );\r\n        }\r\n    }\r\n\r\n    /// @notice mints eNFTs to designated recipients\r\n    /** @dev only callable by functions in this contract which already have reentrancy protection ('mintENFTsFromDeposit() and 'spendENFTs()');\r\n     ** internal mint logic of the ERC1155 abstract contract checks whether the recipient is a contract address (and thus calls onERC1155Received())\r\n     ** see https://github.com/Sol-DAO/solbase/blob/2572d3a1bfb45d4082501ba1a550a2d093a4cca5/src/tokens/ERC1155/ERC1155.sol#L168 */\r\n    /// @param _enftInfo: OpsInfo struct containing all of the necessary Operations Block information\r\n    /// @param _mints: number of eNFTs to be minted for use in for loop (saves a storage read, and array lengths are checked)\r\n    /// @param _flag: Flag enum corresponding to MintFromDeposit, Spend, or Withdraw context (0, 1, or 2)\r\n    function _mintENFTs(\r\n        OpsInfo calldata _enftInfo,\r\n        uint256 _mints,\r\n        Flag _flag\r\n    ) internal {\r\n        if (\r\n            _mints != _enftInfo.outputIds.length ||\r\n            _mints != _enftInfo.detailsHashes.length ||\r\n            _mints != _enftInfo.recipients.length ||\r\n            _mints != _enftInfo.metadata.length\r\n        ) revert LengthMismatch();\r\n\r\n        // mint each eNFT with its corresponding info\r\n        for (uint256 i = 0; i < _mints; ) {\r\n            uint256 _id = _enftInfo.outputIds[i];\r\n            if (bytes(idToAuditorGreylist[_id]).length != 0)\r\n                revert Enshroud_Greylisted(_id); // ensure each _id isn't greylisted by checking if the mapped string has a length of 0 when cast to bytes\r\n            if (nftIdUsed[_id]) revert Enshroud_InvalidID(); // ensure each _id isn't already in use\r\n            nftIdUsed[_id] = true;\r\n            detailsHash[_id] = _enftInfo.detailsHashes[i];\r\n            unchecked {\r\n                enftUnlockTime[_id] = block.number + confirmationBlocks;\r\n            }\r\n\r\n            address _recipient = _enftInfo.recipients[i];\r\n            if (_flag == Flag.Withdraw) {\r\n                // on a Withdraw operation, the mintee must be msg.sender\r\n                _recipient = msg.sender;\r\n            }\r\n            // mint eNFT, amount is always 1\r\n            _mint(_recipient, _id, 1, bytes(_enftInfo.metadata[i]));\r\n\r\n            emit URI(uri(_enftInfo.metadata[i]), _id);\r\n            unchecked {\r\n                ++i; // will not overflow, limited by '_mints'\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @notice withdrawal functionality for redeemed eNFTs\r\n    /// @dev reentrancy-protected by 'redeemENFTsAndWithdraw()'\r\n    /// @param _amountTotal: total amount of tokens/asset (across all eNFTs being redeemed) requesting for withdraw in proper decimals\r\n    /// @param _recipient: address which receives the withdrawn assets\r\n    /// @param _tokenContract: token contract address, ERC20 compliance (including permit, if applicable) checks completed in preceding function call\r\n    function _withdraw(\r\n        uint256 _amountTotal,\r\n        address _recipient,\r\n        address _tokenContract\r\n    ) internal {\r\n        address _daoPool = daoPool;\r\n        uint256 _tokenWithdrawFeeAmount;\r\n        // fee is either the global amount (if no specific assetWithdrawFee set) or specific amount for the _tokenContract\r\n        if (assetWithdrawFee[_tokenContract] == 0) {\r\n            _tokenWithdrawFeeAmount = _mulWadDown(\r\n                _amountTotal,\r\n                assetWithdrawFee[address(0)]\r\n            );\r\n        } else {\r\n            _tokenWithdrawFeeAmount = _mulWadDown(\r\n                _amountTotal,\r\n                assetWithdrawFee[_tokenContract]\r\n            );\r\n        }\r\n\r\n        uint256 _treasuryFeeAmount = _mulWadDown(\r\n            _tokenWithdrawFeeAmount,\r\n            treasuryFee\r\n        );\r\n\r\n        uint256 _netWithdrawal;\r\n        unchecked {\r\n            // will not underflow due to preceding _tokenWithdrawFeeAmount division operation (no fee can be >= 5e17)\r\n            _netWithdrawal = _amountTotal - _tokenWithdrawFeeAmount;\r\n        }\r\n\r\n        // pay withdrawal fees and transfer remainder to _recipient\r\n        if (_tokenContract == address(0) || _tokenContract == weth) {\r\n            // withdraw requests for either ETH/native token or WETH will receive ETH/native token, _amountTotal is properly 18 decimals whether wei or WETH tokens\r\n            // all ETH deposits are converted to WETH, so WETH must be withdrawn whether ETH or WETH is requested to withdraw\r\n            iWeth.withdraw(_amountTotal); // call withdraw with amount of WETH to send ETH to this address\r\n\r\n            // safeTransfer ETH fee to treasury and daoPool, and rest to _recipient\r\n            SafeTransferLib.safeTransferETH(treasury, _treasuryFeeAmount);\r\n            // will not underflow due to preceding _treasuryFeeAmount division operation (no fee can be >= 5e17)\r\n            unchecked {\r\n                SafeTransferLib.safeTransferETH(\r\n                    _daoPool,\r\n                    _tokenWithdrawFeeAmount - _treasuryFeeAmount\r\n                );\r\n            }\r\n            SafeTransferLib.safeTransferETH(_recipient, _netWithdrawal);\r\n\r\n            emit WithdrawETH(_recipient, _netWithdrawal, block.chainid);\r\n        } else {\r\n            // safeTransfer fees for token to treasury and daoPool, and rest to _recipient\r\n            // ERC20 compliance (including permit, if applicable) checks completed in detailsHash condition check\r\n            _tokenContract.safeTransfer(treasury, _treasuryFeeAmount);\r\n            // will not underflow due to preceding _treasuryFeeAmount division operation (no fee can be >= 5e17)\r\n            unchecked {\r\n                _tokenContract.safeTransfer(\r\n                    _daoPool,\r\n                    _tokenWithdrawFeeAmount - _treasuryFeeAmount\r\n                );\r\n            }\r\n            _tokenContract.safeTransfer(_recipient, _netWithdrawal);\r\n            emit WithdrawERC20(\r\n                _recipient,\r\n                _tokenContract,\r\n                _netWithdrawal,\r\n                block.chainid\r\n            );\r\n        }\r\n    }\r\n\r\n    /// @notice reverts on any violation of input constraints\r\n    /// @param _enftInfo: OpsInfo struct containing all of the necessary Operations Block information\r\n    /// @param _mvoInfo: MVOinfo struct containing array of signatures and IDs of MVOs that supplied encrypted metadata. One struct for entire operation.\r\n    /// @param _flag: Flag enum corresponding to MintFromDeposit, Spend, or Withdraw context (0, 1, or 2)\r\n    function _validateInputs(\r\n        OpsInfo calldata _enftInfo,\r\n        MVOinfo calldata _mvoInfo,\r\n        Flag _flag\r\n    ) internal {\r\n        // check required number of MVO signatures were submitted\r\n        uint256 _sigLen = _mvoInfo.mvoSigs.length;\r\n        uint256 _outputIdsLength = _enftInfo.outputIds.length;\r\n        if (_sigLen < requiredSigs) revert Enshroud_MVOSignaturesMissing();\r\n        if (\r\n            _enftInfo.inputIds.length > ARRAY_LIMIT ||\r\n            _outputIdsLength > ARRAY_LIMIT\r\n        ) revert Enshroud_ArrayTooLong();\r\n\r\n        bytes32 _argsHash;\r\n\r\n        // check size limits and build hash from passed arguments\r\n        if (_flag == Flag.MintFromDeposit) {\r\n            _argsHash = keccak256(\r\n                abi.encode(\r\n                    _enftInfo.amount,\r\n                    _enftInfo.outputIds,\r\n                    _enftInfo.detailsHashes\r\n                )\r\n            );\r\n        } else if (_flag == Flag.Spend) {\r\n            _argsHash = keccak256(\r\n                abi.encode(\r\n                    _enftInfo.inputIds,\r\n                    _enftInfo.outputIds,\r\n                    _enftInfo.detailsHashes\r\n                )\r\n            );\r\n        } else if (_flag == Flag.Withdraw) {\r\n            if (_outputIdsLength > 1) revert Enshroud_ArrayTooLong();\r\n            if (_outputIdsLength == 1) {\r\n                // must include \"change\" eNFT minted for overage\r\n                _argsHash = keccak256(\r\n                    abi.encode(\r\n                        _enftInfo.inputIds,\r\n                        _enftInfo.amount,\r\n                        _enftInfo.outputIds,\r\n                        _enftInfo.detailsHashes\r\n                    )\r\n                );\r\n            } else {\r\n                _argsHash = keccak256(\r\n                    abi.encode(_enftInfo.inputIds, _enftInfo.amount)\r\n                );\r\n            }\r\n        }\r\n\r\n        // this computed hash must match the value passed from the MVO layer\r\n        if (_argsHash != _enftInfo.obHash) revert Enshroud_HashDoesNotMatch();\r\n\r\n        // Now validate all MVO signatures on the passed obHash value.\r\n        // Ensure all signatures in '_mvoInfo' are valid, or revert - no need to check for a length mismatch, thanks to the earlier check that there are\r\n        // at least 'requiredSigs' number of mvoSigs and if there are too few mvoIDs, the 'checkMVOSig' call will revert\r\n        for (uint256 x = 0; x < _sigLen; ) {\r\n            string memory _mvoID = _mvoInfo.mvoIDs[x];\r\n            // ensure the MVO is still active and has a high enough tokenQuantum, will revert otherwise\r\n            iMVOStaking.checkMVO(_mvoID);\r\n\r\n            // now check the MVO's sig\r\n            iMVOStaking.checkMVOSig(\r\n                _mvoID,\r\n                _mvoInfo.mvoSigs[x],\r\n                _enftInfo.obHash\r\n            );\r\n            unchecked {\r\n                ++x; // limited by number of sigs, will not overflow\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @notice for variable updates that require update requests from three unique admins\r\n\t/// @param _reqAddr: address value looked up in updateRequested mapping\r\n    /// @param _caller: admin invoking one of the update*() methods (truncated)\r\n\t/// @param _reqType: which type of approval (identifies update*() caller)\r\n\t/// @param _audId: optional auditors[] index for ApprovalTypes.Auditor case\r\n    function _isRequestApproved(\r\n        address _reqAddr,\r\n        bytes8 _caller,\r\n\t\tApprovalTypes _reqType,\r\n\t\tstring memory _audId\r\n    ) internal returns (bool) {\r\n        bytes8 _default;\r\n\t\tbytes memory _aId = bytes(_audId);\r\n\r\n        if (updateRequested[_reqAddr].requester1 == _default) {\r\n            updateRequested[_reqAddr].requester1 = _caller;\r\n\t\t\tupdateRequested[_reqAddr].requestType = _reqType;\r\n\t\t\tif (_reqType == ApprovalTypes.Auditor) {\r\n\t\t\t\t// must also record associated auditor ID\r\n\t\t\t\tupdateRequested[_reqAddr].audID = _aId;\r\n\t\t\t}\r\n\t\t} else if (\r\n            updateRequested[_reqAddr].requester1 != _default &&\r\n            updateRequested[_reqAddr].requester2 == _default &&\r\n            _caller != updateRequested[_reqAddr].requester1 &&\r\n\t\t\t_reqType == updateRequested[_reqAddr].requestType &&\r\n\t\t\t(_reqType != ApprovalTypes.Auditor\r\n\t\t\t || keccak256(updateRequested[_reqAddr].audID) == keccak256(_aId))\r\n        ) updateRequested[_reqAddr].requester2 = _caller;\r\n        else if (\r\n            updateRequested[_reqAddr].requester1 != _default &&\r\n            updateRequested[_reqAddr].requester2 != _default &&\r\n            _caller != updateRequested[_reqAddr].requester1 &&\r\n            _caller != updateRequested[_reqAddr].requester2 &&\r\n\t\t\t_reqType == updateRequested[_reqAddr].requestType &&\r\n\t\t\t(_reqType != ApprovalTypes.Auditor\r\n\t\t\t || keccak256(updateRequested[_reqAddr].audID) == keccak256(_aId))\r\n        ) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /// @dev Solbase mulDiv operation with WAD as denominator. Equivalent to `(x * y) / WAD` rounded down. source: https://github.com/Sol-DAO/solbase/blob/main/src/utils/FixedPointMathLib.sol\r\n    function _mulWadDown(\r\n        uint256 x,\r\n        uint256 y\r\n    ) internal pure returns (uint256 z) {\r\n        assembly {\r\n            // Equivalent to `require(y == 0 || x <= type(uint256).max / y)`.\r\n            if mul(y, gt(x, div(not(0), y))) {\r\n                // Store the function selector of `MulWadFailed()`.\r\n                mstore(0x00, 0xbac65e5b)\r\n                // Revert with (offset, size).\r\n                revert(0x1c, 0x04)\r\n            }\r\n            z := div(mul(x, y), WAD)\r\n        }\r\n    }\r\n}\r\n",
  "sourcePath": "/home/ensh/dapp/truffle/contracts/EnshroudProtocol.sol",
  "ast": {
    "absolutePath": "project:/contracts/EnshroudProtocol.sol",
    "exportedSymbols": {
      "ERC1155": [
        3579
      ],
      "ERC1155TokenReceiver": [
        3623
      ],
      "EnshroudProtocol": [
        5834
      ],
      "IERC20Permit_EnshroudProtocol": [
        3382
      ],
      "IMVOStaking_EnshroudProtocol": [
        3412
      ],
      "IWETH": [
        3391
      ],
      "ReentrancyGuard": [
        7830
      ],
      "SafeTransferLib": [
        7894
      ]
    },
    "id": 5835,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3334,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:24:2"
      },
      {
        "absolutePath": "project:/contracts/ReentrancyGuard.sol",
        "file": "./ReentrancyGuard.sol",
        "id": 3336,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5835,
        "sourceUnit": 7831,
        "src": "582:54:2",
        "symbolAliases": [
          {
            "foreign": {
              "id": 3335,
              "name": "ReentrancyGuard",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 7830,
              "src": "590:15:2",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/SafeTransferLib.sol",
        "file": "./SafeTransferLib.sol",
        "id": 3338,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5835,
        "sourceUnit": 7895,
        "src": "745:54:2",
        "symbolAliases": [
          {
            "foreign": {
              "id": 3337,
              "name": "SafeTransferLib",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 7894,
              "src": "753:15:2",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IERC20Permit_EnshroudProtocol",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 3382,
        "linearizedBaseContracts": [
          3382
        ],
        "name": "IERC20Permit_EnshroudProtocol",
        "nameLocation": "988:29:2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "d505accf",
            "id": 3355,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "permit",
            "nameLocation": "1034:6:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3340,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1059:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3355,
                  "src": "1051:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3339,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1051:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3342,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "1083:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3355,
                  "src": "1075:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3341,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1075:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3344,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1109:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3355,
                  "src": "1101:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3343,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1101:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3346,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nameLocation": "1133:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3355,
                  "src": "1125:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3345,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1125:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3348,
                  "mutability": "mutable",
                  "name": "v",
                  "nameLocation": "1158:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3355,
                  "src": "1152:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3347,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1152:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3350,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "1178:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3355,
                  "src": "1170:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3349,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1170:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3352,
                  "mutability": "mutable",
                  "name": "s",
                  "nameLocation": "1198:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3355,
                  "src": "1190:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1190:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1040:166:2"
            },
            "returnParameters": {
              "id": 3354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1215:0:2"
            },
            "scope": 3382,
            "src": "1025:191:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "8fcbaf0c",
            "id": 3374,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "permit",
            "nameLocation": "1252:6:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3357,
                  "mutability": "mutable",
                  "name": "holder",
                  "nameLocation": "1277:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1269:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1269:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3359,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "1302:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1294:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3358,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1294:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3361,
                  "mutability": "mutable",
                  "name": "nonce",
                  "nameLocation": "1328:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1320:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1320:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3363,
                  "mutability": "mutable",
                  "name": "expiry",
                  "nameLocation": "1352:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1344:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1344:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3365,
                  "mutability": "mutable",
                  "name": "allowed",
                  "nameLocation": "1374:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1369:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3364,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1369:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3367,
                  "mutability": "mutable",
                  "name": "v",
                  "nameLocation": "1398:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1392:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3366,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1392:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3369,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "1418:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1410:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3368,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3371,
                  "mutability": "mutable",
                  "name": "s",
                  "nameLocation": "1438:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3374,
                  "src": "1430:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3370,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1430:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1258:188:2"
            },
            "returnParameters": {
              "id": 3373,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1455:0:2"
            },
            "scope": 3382,
            "src": "1243:213:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "70a08231",
            "id": 3381,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "1470:9:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3376,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1488:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3381,
                  "src": "1480:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3375,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1480:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1479:15:2"
            },
            "returnParameters": {
              "id": 3380,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3379,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3381,
                  "src": "1518:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3378,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1518:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1517:9:2"
            },
            "scope": 3382,
            "src": "1461:66:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5835,
        "src": "978:552:2",
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IWETH",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 3391,
        "linearizedBaseContracts": [
          3391
        ],
        "name": "IWETH",
        "nameLocation": "1544:5:2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "d0e30db0",
            "id": 3385,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "1566:7:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3383,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1573:2:2"
            },
            "returnParameters": {
              "id": 3384,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1592:0:2"
            },
            "scope": 3391,
            "src": "1557:36:2",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "2e1a7d4d",
            "id": 3390,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdraw",
            "nameLocation": "1610:8:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3387,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3390,
                  "src": "1619:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1619:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1618:9:2"
            },
            "returnParameters": {
              "id": 3389,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1636:0:2"
            },
            "scope": 3391,
            "src": "1601:36:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5835,
        "src": "1534:106:2",
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IMVOStaking_EnshroudProtocol",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 3412,
        "linearizedBaseContracts": [
          3412
        ],
        "name": "IMVOStaking_EnshroudProtocol",
        "nameLocation": "1654:28:2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "c38b84a1",
            "id": 3397,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "awardPoints",
            "nameLocation": "1699:11:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3394,
                  "mutability": "mutable",
                  "name": "mvoIDs",
                  "nameLocation": "1729:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3397,
                  "src": "1711:24:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3392,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1711:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 3393,
                    "nodeType": "ArrayTypeName",
                    "src": "1711:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1710:26:2"
            },
            "returnParameters": {
              "id": 3396,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1745:0:2"
            },
            "scope": 3412,
            "src": "1690:56:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "bb21aa52",
            "id": 3402,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "checkMVO",
            "nameLocation": "1763:8:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3399,
                  "mutability": "mutable",
                  "name": "mvoID",
                  "nameLocation": "1788:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3402,
                  "src": "1772:21:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3398,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1772:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1771:23:2"
            },
            "returnParameters": {
              "id": 3401,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1803:0:2"
            },
            "scope": 3412,
            "src": "1754:50:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "c4df873f",
            "id": 3411,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "checkMVOSig",
            "nameLocation": "1821:11:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3404,
                  "mutability": "mutable",
                  "name": "mvoID",
                  "nameLocation": "1859:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3411,
                  "src": "1843:21:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3403,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1843:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3406,
                  "mutability": "mutable",
                  "name": "mvoSig",
                  "nameLocation": "1890:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3411,
                  "src": "1875:21:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3405,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1875:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3408,
                  "mutability": "mutable",
                  "name": "obHash",
                  "nameLocation": "1915:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3411,
                  "src": "1907:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3407,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1907:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1832:96:2"
            },
            "returnParameters": {
              "id": 3410,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1942:0:2"
            },
            "scope": 3412,
            "src": "1812:131:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5835,
        "src": "1644:302:2",
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "abstract": true,
        "baseContracts": [],
        "canonicalName": "ERC1155",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 3413,
          "nodeType": "StructuredDocumentation",
          "src": "2191:463:2",
          "text": "@dev the following were removed from the Sol-DAO implementation for non-transferability or because they are unused: ApprovalForAll() event, Unauthorized() custom error,*** 'isApprovedForAll[]' mapping, 'setApprovalForAll()', 'safeTransferFrom()', 'safeBatchTransferFrom()', 'balanceOfBatch()'; '_batchMint()'; 'batchBurn()'; 'TransferBatch' event*** therefore this is intentionally not fully compliant with the (usually transferable) ERC1155 standard "
        },
        "fullyImplemented": false,
        "id": 3579,
        "linearizedBaseContracts": [
          3579
        ],
        "name": "ERC1155",
        "nameLocation": "2674:7:2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": {
              "id": 3414,
              "nodeType": "StructuredDocumentation",
              "src": "2689:174:2",
              "text": "-----------------------------------------------------------------------\n Events\n -----------------------------------------------------------------------"
            },
            "eventSelector": "c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62",
            "id": 3426,
            "name": "TransferSingle",
            "nameLocation": "2875:14:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3416,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "2916:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3426,
                  "src": "2900:24:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2900:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3418,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "2951:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3426,
                  "src": "2935:20:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3417,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2935:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3420,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "2982:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3426,
                  "src": "2966:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3419,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2966:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3422,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "3003:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3426,
                  "src": "2995:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3421,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2995:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3424,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "3024:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3426,
                  "src": "3016:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3423,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3016:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2889:148:2"
            },
            "src": "2869:169:2"
          },
          {
            "anonymous": false,
            "eventSelector": "6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b",
            "id": 3432,
            "name": "URI",
            "nameLocation": "3052:3:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3428,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "3063:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3432,
                  "src": "3056:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3427,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3056:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3430,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "3086:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3432,
                  "src": "3070:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3429,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3070:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3055:34:2"
            },
            "src": "3046:44:2"
          },
          {
            "documentation": {
              "id": 3433,
              "nodeType": "StructuredDocumentation",
              "src": "3098:181:2",
              "text": "-----------------------------------------------------------------------\n Custom Errors\n -----------------------------------------------------------------------"
            },
            "errorSelector": "3da63931",
            "id": 3435,
            "name": "UnsafeRecipient",
            "nameLocation": "3291:15:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3434,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3306:2:2"
            },
            "src": "3285:24:2"
          },
          {
            "errorSelector": "9c8d2cd2",
            "id": 3437,
            "name": "InvalidRecipient",
            "nameLocation": "3323:16:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3436,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3339:2:2"
            },
            "src": "3317:25:2"
          },
          {
            "errorSelector": "ff633a38",
            "id": 3439,
            "name": "LengthMismatch",
            "nameLocation": "3356:14:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3438,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3370:2:2"
            },
            "src": "3350:23:2"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3440,
              "nodeType": "StructuredDocumentation",
              "src": "3381:183:2",
              "text": "-----------------------------------------------------------------------\n ERC1155 Storage\n -----------------------------------------------------------------------"
            },
            "functionSelector": "00fdd58e",
            "id": 3446,
            "mutability": "mutable",
            "name": "balanceOf",
            "nameLocation": "3625:9:2",
            "nodeType": "VariableDeclaration",
            "scope": 3579,
            "src": "3570:64:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
              "typeString": "mapping(address => mapping(uint256 => uint256))"
            },
            "typeName": {
              "id": 3445,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3441,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "3578:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "3570:47:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                "typeString": "mapping(address => mapping(uint256 => uint256))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3444,
                "keyName": "",
                "keyNameLocation": "-1:-1:-1",
                "keyType": {
                  "id": 3442,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3597:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "3589:27:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "valueName": "",
                "valueNameLocation": "-1:-1:-1",
                "valueType": {
                  "id": 3443,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3608:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "documentation": {
              "id": 3447,
              "nodeType": "StructuredDocumentation",
              "src": "3643:182:2",
              "text": "-----------------------------------------------------------------------\n Metadata Logic\n -----------------------------------------------------------------------"
            },
            "functionSelector": "0de72b7e",
            "id": 3454,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "uri",
            "nameLocation": "3840:3:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3449,
                  "mutability": "mutable",
                  "name": "metadata",
                  "nameLocation": "3870:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3454,
                  "src": "3854:24:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3448,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3854:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3843:42:2"
            },
            "returnParameters": {
              "id": 3453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3452,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3454,
                  "src": "3915:13:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3451,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3915:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3914:15:2"
            },
            "scope": 3579,
            "src": "3831:99:2",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3474,
              "nodeType": "Block",
              "src": "4222:263:2",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 3468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 3464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3462,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3457,
                          "src": "4253:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30783031666663396137",
                          "id": 3463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4268:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_33540519_by_1",
                            "typeString": "int_const 33540519"
                          },
                          "value": "0x01ffc9a7"
                        },
                        "src": "4253:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 3467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3465,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3457,
                          "src": "4329:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30786439623637613236",
                          "id": 3466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4344:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3652614694_by_1",
                            "typeString": "int_const 3652614694"
                          },
                          "value": "0xd9b67a26"
                        },
                        "src": "4329:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "4253:101:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 3471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3469,
                        "name": "interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3457,
                        "src": "4406:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30783065383933343163",
                        "id": 3470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4421:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_243872796_by_1",
                          "typeString": "int_const 243872796"
                        },
                        "value": "0x0e89341c"
                      },
                      "src": "4406:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4253:178:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3461,
                  "id": 3473,
                  "nodeType": "Return",
                  "src": "4233:198:2"
                }
              ]
            },
            "documentation": {
              "id": 3455,
              "nodeType": "StructuredDocumentation",
              "src": "3938:180:2",
              "text": "-----------------------------------------------------------------------\n ERC165 Logic\n -----------------------------------------------------------------------"
            },
            "functionSelector": "01ffc9a7",
            "id": 3475,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "4133:17:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3458,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3457,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "4168:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3475,
                  "src": "4161:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3456,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "4161:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4150:36:2"
            },
            "returnParameters": {
              "id": 3461,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3460,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3475,
                  "src": "4216:4:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3459,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4216:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4215:6:2"
            },
            "scope": 3579,
            "src": "4124:361:2",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3546,
              "nodeType": "Block",
              "src": "5011:617:2",
              "statements": [
                {
                  "expression": {
                    "id": 3493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 3487,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3446,
                          "src": "5022:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(uint256 => uint256))"
                          }
                        },
                        "id": 3490,
                        "indexExpression": {
                          "id": 3488,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3478,
                          "src": "5032:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5022:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3491,
                      "indexExpression": {
                        "id": 3489,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3480,
                        "src": "5036:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5022:17:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 3492,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3482,
                      "src": "5043:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5022:27:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3494,
                  "nodeType": "ExpressionStatement",
                  "src": "5022:27:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3496,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "5142:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5146:6:2",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "5142:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5162:1:2",
                            "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": 3499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5154:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3498,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5154:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5154:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3502,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3478,
                        "src": "5166:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3503,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3480,
                        "src": "5170:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3504,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3482,
                        "src": "5174:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3495,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3426,
                      "src": "5127:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 3505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5127:54:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3506,
                  "nodeType": "EmitStatement",
                  "src": "5122:59:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 3507,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3478,
                          "src": "5198:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5201:4:2",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "5198:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5206:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "5198:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5216:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5198:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 3540,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3535,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3478,
                        "src": "5577:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3538,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5591:1:2",
                            "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": 3537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5583:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3536,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5583:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5583:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "5577:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 3544,
                    "nodeType": "IfStatement",
                    "src": "5573:47:2",
                    "trueBody": {
                      "errorCall": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3541,
                          "name": "InvalidRecipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3437,
                          "src": "5602:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                            "typeString": "function () pure returns (error)"
                          }
                        },
                        "id": 3542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5602:18:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_error",
                          "typeString": "error"
                        }
                      },
                      "id": 3543,
                      "nodeType": "RevertStatement",
                      "src": "5595:25:2"
                    }
                  },
                  "id": 3545,
                  "nodeType": "IfStatement",
                  "src": "5194:426:2",
                  "trueBody": {
                    "id": 3534,
                    "nodeType": "Block",
                    "src": "5219:348:2",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 3529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 3516,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5321:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5325:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "5321:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5362:1:2",
                                    "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": 3519,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5354:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3518,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5354:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5354:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 3522,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3480,
                                "src": "5387:2:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3523,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3482,
                                "src": "5412:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3524,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3484,
                                "src": "5441:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3513,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3478,
                                    "src": "5277:2:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3512,
                                  "name": "ERC1155TokenReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3623,
                                  "src": "5256:20:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ERC1155TokenReceiver_$3623_$",
                                    "typeString": "type(contract ERC1155TokenReceiver)"
                                  }
                                },
                                "id": 3514,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5256:24:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC1155TokenReceiver_$3623",
                                  "typeString": "contract ERC1155TokenReceiver"
                                }
                              },
                              "id": 3515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5281:17:2",
                              "memberName": "onERC1155Received",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3600,
                              "src": "5256:42:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                              }
                            },
                            "id": 3525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5256:208:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 3526,
                                "name": "ERC1155TokenReceiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3623,
                                "src": "5468:20:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC1155TokenReceiver_$3623_$",
                                  "typeString": "type(contract ERC1155TokenReceiver)"
                                }
                              },
                              "id": 3527,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "5489:17:2",
                              "memberName": "onERC1155Received",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3600,
                              "src": "5468:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                "typeString": "function ERC1155TokenReceiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"
                              }
                            },
                            "id": 3528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "5507:8:2",
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "5468:47:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "5256:259:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3533,
                        "nodeType": "IfStatement",
                        "src": "5234:321:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 3530,
                              "name": "UnsafeRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3435,
                              "src": "5538:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 3531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5538:17:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 3532,
                          "nodeType": "RevertStatement",
                          "src": "5531:24:2"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3476,
              "nodeType": "StructuredDocumentation",
              "src": "4691:180:2",
              "text": "@param to: owning address\n @param id: unique ID of eNFT\n @param amount: always 1 (quantity is specified within the eNFT)\n @param data: encrypted eNFT metadata"
            },
            "id": 3547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nameLocation": "4886:5:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3478,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "4910:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3547,
                  "src": "4902:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3477,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4902:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3480,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "4931:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3547,
                  "src": "4923:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3479,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4923:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3482,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "4952:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3547,
                  "src": "4944:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3481,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4944:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3484,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4982:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3547,
                  "src": "4969:17:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3483,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4969:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4891:102:2"
            },
            "returnParameters": {
              "id": 3486,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5011:0:2"
            },
            "scope": 3579,
            "src": "4877:751:2",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3577,
              "nodeType": "Block",
              "src": "5858:182:2",
              "statements": [
                {
                  "expression": {
                    "id": 3563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 3557,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3446,
                          "src": "5869:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(uint256 => uint256))"
                          }
                        },
                        "id": 3560,
                        "indexExpression": {
                          "id": 3558,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3550,
                          "src": "5879:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5869:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3561,
                      "indexExpression": {
                        "id": 3559,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3552,
                        "src": "5885:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5869:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "id": 3562,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3554,
                      "src": "5892:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5869:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3564,
                  "nodeType": "ExpressionStatement",
                  "src": "5869:29:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3566,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "5991:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5995:6:2",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "5991:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3568,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3550,
                        "src": "6003:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6017:1:2",
                            "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": 3570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6009:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3569,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6009:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6009:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3573,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3552,
                        "src": "6021:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3574,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3554,
                        "src": "6025:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3565,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3426,
                      "src": "5976:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 3575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5976:56:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3576,
                  "nodeType": "EmitStatement",
                  "src": "5971:61:2"
                }
              ]
            },
            "documentation": {
              "id": 3548,
              "nodeType": "StructuredDocumentation",
              "src": "5636:142:2",
              "text": "@param from: owning address burning the eNFT\n @param id: unique ID of eNFT\n @param amount: always 1 (results in 0 balance)"
            },
            "id": 3578,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "5793:5:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3550,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5807:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3578,
                  "src": "5799:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3549,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5799:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3552,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "5821:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3578,
                  "src": "5813:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3551,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5813:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3554,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "5833:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3578,
                  "src": "5825:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5825:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5798:42:2"
            },
            "returnParameters": {
              "id": 3556,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5858:0:2"
            },
            "scope": 3579,
            "src": "5784:256:2",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 5835,
        "src": "2656:3387:2",
        "usedErrors": [
          3435,
          3437,
          3439
        ],
        "usedEvents": [
          3426,
          3432
        ]
      },
      {
        "abstract": true,
        "baseContracts": [],
        "canonicalName": "ERC1155TokenReceiver",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 3580,
          "nodeType": "StructuredDocumentation",
          "src": "6047:348:2",
          "text": "@author Solbase (https://github.com/Sol-DAO/solbase/blob/main/src/tokens/ERC1155/ERC1155.sol)\n @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155/ERC1155.sol)\n @dev while the ERC1155-like tokens in this protocol are non-transferable, the below are included for minted eNFT receivers"
        },
        "fullyImplemented": true,
        "id": 3623,
        "linearizedBaseContracts": [
          3623
        ],
        "name": "ERC1155TokenReceiver",
        "nameLocation": "6413:20:2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3599,
              "nodeType": "Block",
              "src": "6606:73:2",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 3595,
                        "name": "ERC1155TokenReceiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3623,
                        "src": "6624:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155TokenReceiver_$3623_$",
                          "typeString": "type(contract ERC1155TokenReceiver)"
                        }
                      },
                      "id": 3596,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6645:17:2",
                      "memberName": "onERC1155Received",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3600,
                      "src": "6624:38:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                        "typeString": "function ERC1155TokenReceiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"
                      }
                    },
                    "id": 3597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "6663:8:2",
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "src": "6624:47:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 3594,
                  "id": 3598,
                  "nodeType": "Return",
                  "src": "6617:54:2"
                }
              ]
            },
            "functionSelector": "f23a6e61",
            "id": 3600,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC1155Received",
            "nameLocation": "6450:17:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3582,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3600,
                  "src": "6478:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6478:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3584,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3600,
                  "src": "6496:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3583,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6496:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3586,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3600,
                  "src": "6514:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3585,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6514:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3588,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3600,
                  "src": "6532:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3587,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6532:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3590,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3600,
                  "src": "6550:14:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3589,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6550:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6467:104:2"
            },
            "returnParameters": {
              "id": 3594,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3593,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3600,
                  "src": "6598:6:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3592,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "6598:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6597:8:2"
            },
            "scope": 3623,
            "src": "6441:238:2",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3621,
              "nodeType": "Block",
              "src": "6879:78:2",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 3617,
                        "name": "ERC1155TokenReceiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3623,
                        "src": "6897:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155TokenReceiver_$3623_$",
                          "typeString": "type(contract ERC1155TokenReceiver)"
                        }
                      },
                      "id": 3618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6918:22:2",
                      "memberName": "onERC1155BatchReceived",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3622,
                      "src": "6897:43:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                        "typeString": "function ERC1155TokenReceiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"
                      }
                    },
                    "id": 3619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "6941:8:2",
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "src": "6897:52:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 3616,
                  "id": 3620,
                  "nodeType": "Return",
                  "src": "6890:59:2"
                }
              ]
            },
            "functionSelector": "bc197c81",
            "id": 3622,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC1155BatchReceived",
            "nameLocation": "6696:22:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3602,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3622,
                  "src": "6729:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3601,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6729:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3604,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3622,
                  "src": "6747:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3603,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6747:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3607,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3622,
                  "src": "6765:18:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3605,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6765:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3606,
                    "nodeType": "ArrayTypeName",
                    "src": "6765:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3610,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3622,
                  "src": "6794:18:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3608,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6794:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3609,
                    "nodeType": "ArrayTypeName",
                    "src": "6794:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3612,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3622,
                  "src": "6823:14:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3611,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6823:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6718:126:2"
            },
            "returnParameters": {
              "id": 3616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3615,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3622,
                  "src": "6871:6:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3614,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "6871:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6870:8:2"
            },
            "scope": 3623,
            "src": "6687:270:2",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          }
        ],
        "scope": 5835,
        "src": "6395:565:2",
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 3625,
              "name": "ERC1155",
              "nameLocations": [
                "7033:7:2"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3579,
              "src": "7033:7:2"
            },
            "id": 3626,
            "nodeType": "InheritanceSpecifier",
            "src": "7033:7:2"
          },
          {
            "baseName": {
              "id": 3627,
              "name": "ERC1155TokenReceiver",
              "nameLocations": [
                "7042:20:2"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3623,
              "src": "7042:20:2"
            },
            "id": 3628,
            "nodeType": "InheritanceSpecifier",
            "src": "7042:20:2"
          },
          {
            "baseName": {
              "id": 3629,
              "name": "ReentrancyGuard",
              "nameLocations": [
                "7064:15:2"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 7830,
              "src": "7064:15:2"
            },
            "id": 3630,
            "nodeType": "InheritanceSpecifier",
            "src": "7064:15:2"
          }
        ],
        "canonicalName": "EnshroudProtocol",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 3624,
          "nodeType": "StructuredDocumentation",
          "src": "6964:40:2",
          "text": "@notice Enshroud protocol contract"
        },
        "fullyImplemented": true,
        "id": 5834,
        "linearizedBaseContracts": [
          5834,
          7830,
          3623,
          3579
        ],
        "name": "EnshroudProtocol",
        "nameLocation": "7013:16:2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 3633,
            "libraryName": {
              "id": 3631,
              "name": "SafeTransferLib",
              "nameLocations": [
                "7093:15:2"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 7894,
              "src": "7093:15:2"
            },
            "nodeType": "UsingForDirective",
            "src": "7087:34:2",
            "typeName": {
              "id": 3632,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "7113:7:2",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "canonicalName": "EnshroudProtocol.Flag",
            "documentation": {
              "id": 3634,
              "nodeType": "StructuredDocumentation",
              "src": "7126:28:2",
              "text": "types of eNFT operations"
            },
            "id": 3638,
            "members": [
              {
                "id": 3635,
                "name": "MintFromDeposit",
                "nameLocation": "7181:15:2",
                "nodeType": "EnumValue",
                "src": "7181:15:2"
              },
              {
                "id": 3636,
                "name": "Spend",
                "nameLocation": "7207:5:2",
                "nodeType": "EnumValue",
                "src": "7207:5:2"
              },
              {
                "id": 3637,
                "name": "Withdraw",
                "nameLocation": "7223:8:2",
                "nodeType": "EnumValue",
                "src": "7223:8:2"
              }
            ],
            "name": "Flag",
            "nameLocation": "7165:4:2",
            "nodeType": "EnumDefinition",
            "src": "7160:78:2"
          },
          {
            "canonicalName": "EnshroudProtocol.OpsInfo",
            "documentation": {
              "id": 3639,
              "nodeType": "StructuredDocumentation",
              "src": "7246:836:2",
              "text": "@notice struct of necessary Operations Block information to properly cause eNFT mint(s)\n @param recipients: array of addresses to receive minted eNFTs\n @param detailsHashes: supplied by MVO layer, hash of address owner, uint256 id, address asset, uint256 amount, and (optional) bytes rand for each eNFT\n @param inputIds: array of token IDs of eNFTs to be redeemed and burned\n @param outputIds: array of token IDs of eNFTs to be minted -- unique and assigned randomly by the lead MVO\n @param metadata: array of metadata strings for each corresponding eNFT ID, passed to uri function\n @param amount: amount of tokens to which the Operations Block corresponds\n @param obHash: keccak256 hash of the Operations Block\n @dev each array must be in the same corresponding order"
            },
            "id": 3659,
            "members": [
              {
                "constant": false,
                "id": 3642,
                "mutability": "mutable",
                "name": "recipients",
                "nameLocation": "8124:10:2",
                "nodeType": "VariableDeclaration",
                "scope": 3659,
                "src": "8114:20:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3640,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8114:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3641,
                  "nodeType": "ArrayTypeName",
                  "src": "8114:9:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3645,
                "mutability": "mutable",
                "name": "detailsHashes",
                "nameLocation": "8155:13:2",
                "nodeType": "VariableDeclaration",
                "scope": 3659,
                "src": "8145:23:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3643,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8145:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3644,
                  "nodeType": "ArrayTypeName",
                  "src": "8145:9:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3648,
                "mutability": "mutable",
                "name": "inputIds",
                "nameLocation": "8189:8:2",
                "nodeType": "VariableDeclaration",
                "scope": 3659,
                "src": "8179:18:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3646,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8179:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3647,
                  "nodeType": "ArrayTypeName",
                  "src": "8179:9:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3651,
                "mutability": "mutable",
                "name": "outputIds",
                "nameLocation": "8218:9:2",
                "nodeType": "VariableDeclaration",
                "scope": 3659,
                "src": "8208:19:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8208:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3650,
                  "nodeType": "ArrayTypeName",
                  "src": "8208:9:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3654,
                "mutability": "mutable",
                "name": "metadata",
                "nameLocation": "8247:8:2",
                "nodeType": "VariableDeclaration",
                "scope": 3659,
                "src": "8238:17:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3652,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8238:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 3653,
                  "nodeType": "ArrayTypeName",
                  "src": "8238:8:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3656,
                "mutability": "mutable",
                "name": "amount",
                "nameLocation": "8274:6:2",
                "nodeType": "VariableDeclaration",
                "scope": 3659,
                "src": "8266:14:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3655,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "8266:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3658,
                "mutability": "mutable",
                "name": "obHash",
                "nameLocation": "8299:6:2",
                "nodeType": "VariableDeclaration",
                "scope": 3659,
                "src": "8291:14:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 3657,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "8291:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "OpsInfo",
            "nameLocation": "8095:7:2",
            "nodeType": "StructDefinition",
            "scope": 5834,
            "src": "8088:225:2",
            "visibility": "public"
          },
          {
            "canonicalName": "EnshroudProtocol.MVOinfo",
            "documentation": {
              "id": 3660,
              "nodeType": "StructuredDocumentation",
              "src": "8321:203:2",
              "text": "@notice 'mvoSigs' is an array of MVO signatures provided by the MVO server (first is lead MVO); 'mvoIDs' are the IDs of the MVOs, the first of which is the lead MVO which receives the deposit message"
            },
            "id": 3667,
            "members": [
              {
                "constant": false,
                "id": 3663,
                "mutability": "mutable",
                "name": "mvoSigs",
                "nameLocation": "8564:7:2",
                "nodeType": "VariableDeclaration",
                "scope": 3667,
                "src": "8556:15:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                  "typeString": "bytes[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3661,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8556:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "id": 3662,
                  "nodeType": "ArrayTypeName",
                  "src": "8556:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                    "typeString": "bytes[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3666,
                "mutability": "mutable",
                "name": "mvoIDs",
                "nameLocation": "8591:6:2",
                "nodeType": "VariableDeclaration",
                "scope": 3667,
                "src": "8582:15:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3664,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8582:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 3665,
                  "nodeType": "ArrayTypeName",
                  "src": "8582:8:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "MVOinfo",
            "nameLocation": "8537:7:2",
            "nodeType": "StructDefinition",
            "scope": 5834,
            "src": "8530:75:2",
            "visibility": "public"
          },
          {
            "canonicalName": "EnshroudProtocol.ApprovalTypes",
            "documentation": {
              "id": 3668,
              "nodeType": "StructuredDocumentation",
              "src": "8610:54:2",
              "text": "types of approvals handled by _isRequestApproved()"
            },
            "id": 3674,
            "members": [
              {
                "id": 3669,
                "name": "MVOStaking",
                "nameLocation": "8688:10:2",
                "nodeType": "EnumValue",
                "src": "8688:10:2"
              },
              {
                "id": 3670,
                "name": "GreyList",
                "nameLocation": "8700:8:2",
                "nodeType": "EnumValue",
                "src": "8700:8:2"
              },
              {
                "id": 3671,
                "name": "Auditor",
                "nameLocation": "8710:7:2",
                "nodeType": "EnumValue",
                "src": "8710:7:2"
              },
              {
                "id": 3672,
                "name": "Treasury",
                "nameLocation": "8719:8:2",
                "nodeType": "EnumValue",
                "src": "8719:8:2"
              },
              {
                "id": 3673,
                "name": "DaoPool",
                "nameLocation": "8729:7:2",
                "nodeType": "EnumValue",
                "src": "8729:7:2"
              }
            ],
            "name": "ApprovalTypes",
            "nameLocation": "8672:13:2",
            "nodeType": "EnumDefinition",
            "src": "8667:71:2"
          },
          {
            "canonicalName": "EnshroudProtocol.Requests",
            "documentation": {
              "id": 3675,
              "nodeType": "StructuredDocumentation",
              "src": "8746:101:2",
              "text": "@notice to track admin update requests; addresses truncated to bytes8 for size/gas considerations"
            },
            "id": 3685,
            "members": [
              {
                "constant": false,
                "id": 3677,
                "mutability": "mutable",
                "name": "requester1",
                "nameLocation": "8887:10:2",
                "nodeType": "VariableDeclaration",
                "scope": 3685,
                "src": "8880:17:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes8",
                  "typeString": "bytes8"
                },
                "typeName": {
                  "id": 3676,
                  "name": "bytes8",
                  "nodeType": "ElementaryTypeName",
                  "src": "8880:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3679,
                "mutability": "mutable",
                "name": "requester2",
                "nameLocation": "8915:10:2",
                "nodeType": "VariableDeclaration",
                "scope": 3685,
                "src": "8908:17:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes8",
                  "typeString": "bytes8"
                },
                "typeName": {
                  "id": 3678,
                  "name": "bytes8",
                  "nodeType": "ElementaryTypeName",
                  "src": "8908:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3682,
                "mutability": "mutable",
                "name": "requestType",
                "nameLocation": "8944:11:2",
                "nodeType": "VariableDeclaration",
                "scope": 3685,
                "src": "8930:25:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                  "typeString": "enum EnshroudProtocol.ApprovalTypes"
                },
                "typeName": {
                  "id": 3681,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 3680,
                    "name": "ApprovalTypes",
                    "nameLocations": [
                      "8930:13:2"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3674,
                    "src": "8930:13:2"
                  },
                  "referencedDeclaration": 3674,
                  "src": "8930:13:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                    "typeString": "enum EnshroudProtocol.ApprovalTypes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3684,
                "mutability": "mutable",
                "name": "audID",
                "nameLocation": "8966:5:2",
                "nodeType": "VariableDeclaration",
                "scope": 3685,
                "src": "8960:11:2",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 3683,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "8960:5:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Requests",
            "nameLocation": "8860:8:2",
            "nodeType": "StructDefinition",
            "scope": 5834,
            "src": "8853:126:2",
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3686,
              "nodeType": "StructuredDocumentation",
              "src": "9169:71:2",
              "text": "@dev to enable dai-pattern permit (ETH mainnet, possibly elsewhere)"
            },
            "id": 3688,
            "mutability": "immutable",
            "name": "daiToken",
            "nameLocation": "9270:8:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9243:35:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3687,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "9243:7:2",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 3691,
            "mutability": "constant",
            "name": "ARRAY_LIMIT",
            "nameLocation": "9350:11:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9324:42:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3689,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "9324:7:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "3230",
              "id": 3690,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "9364:2:2",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_20_by_1",
                "typeString": "int_const 20"
              },
              "value": "20"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 3694,
            "mutability": "constant",
            "name": "FEE_LIMIT",
            "nameLocation": "9399:9:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9373:42:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3692,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "9373:7:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "35653137",
              "id": 3693,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "9411:4:2",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_500000000000000000_by_1",
                "typeString": "int_const 500000000000000000"
              },
              "value": "5e17"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 3697,
            "mutability": "constant",
            "name": "WAD",
            "nameLocation": "9448:3:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9422:36:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3695,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "9422:7:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31653138",
              "id": 3696,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "9454:4:2",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "value": "1e18"
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3699,
            "mutability": "immutable",
            "name": "weth",
            "nameLocation": "9494:4:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9467:31:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3698,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "9467:7:2",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "functionSelector": "460a58aa",
            "id": 3701,
            "mutability": "immutable",
            "name": "confirmationBlocks",
            "nameLocation": "9530:18:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9505:43:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3700,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "9505:7:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "33e0ff5d",
            "id": 3703,
            "mutability": "mutable",
            "name": "daoPool",
            "nameLocation": "9580:7:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9557:30:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address_payable",
              "typeString": "address payable"
            },
            "typeName": {
              "id": 3702,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "9557:15:2",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "61d027b3",
            "id": 3705,
            "mutability": "mutable",
            "name": "treasury",
            "nameLocation": "9617:8:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9594:31:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address_payable",
              "typeString": "address payable"
            },
            "typeName": {
              "id": 3704,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "9594:15:2",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "6c0360eb",
            "id": 3707,
            "mutability": "mutable",
            "name": "baseURI",
            "nameLocation": "9648:7:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9634:21:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 3706,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "9634:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "7c0bbd5c",
            "id": 3709,
            "mutability": "mutable",
            "name": "requiredSigs",
            "nameLocation": "9679:12:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9664:27:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3708,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "9664:7:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3710,
              "nodeType": "StructuredDocumentation",
              "src": "9700:156:2",
              "text": "@notice initial treasury fee is 5%. To remove, DAO voting app (once added as admin) and two other admins can vote to change treasury address to DAO pool"
            },
            "functionSelector": "cc32d176",
            "id": 3713,
            "mutability": "mutable",
            "name": "treasuryFee",
            "nameLocation": "9877:11:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9862:33:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3711,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "9862:7:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "35653136",
              "id": 3712,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "9891:4:2",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_50000000000000000_by_1",
                "typeString": "int_const 50000000000000000"
              },
              "value": "5e16"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3716,
            "mutability": "mutable",
            "name": "iMVOStaking",
            "nameLocation": "9942:11:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9904:49:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
              "typeString": "contract IMVOStaking_EnshroudProtocol"
            },
            "typeName": {
              "id": 3715,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 3714,
                "name": "IMVOStaking_EnshroudProtocol",
                "nameLocations": [
                  "9904:28:2"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 3412,
                "src": "9904:28:2"
              },
              "referencedDeclaration": 3412,
              "src": "9904:28:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                "typeString": "contract IMVOStaking_EnshroudProtocol"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3719,
            "mutability": "immutable",
            "name": "iWeth",
            "nameLocation": "9985:5:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9960:30:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IWETH_$3391",
              "typeString": "contract IWETH"
            },
            "typeName": {
              "id": 3718,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 3717,
                "name": "IWETH",
                "nameLocations": [
                  "9960:5:2"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 3391,
                "src": "9960:5:2"
              },
              "referencedDeclaration": 3391,
              "src": "9960:5:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IWETH_$3391",
                "typeString": "contract IWETH"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3724,
            "mutability": "mutable",
            "name": "updateRequested",
            "nameLocation": "10037:15:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "9999:53:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
              "typeString": "mapping(address => struct EnshroudProtocol.Requests)"
            },
            "typeName": {
              "id": 3723,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3720,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "10007:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "9999:28:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                "typeString": "mapping(address => struct EnshroudProtocol.Requests)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3722,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 3721,
                  "name": "Requests",
                  "nameLocations": [
                    "10018:8:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3685,
                  "src": "10018:8:2"
                },
                "referencedDeclaration": 3685,
                "src": "10018:8:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Requests_$3685_storage_ptr",
                  "typeString": "struct EnshroudProtocol.Requests"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "functionSelector": "3e4a89d1",
            "id": 3728,
            "mutability": "mutable",
            "name": "adminStatus",
            "nameLocation": "10091:11:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10059:43:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 3727,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3725,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "10067:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "10059:24:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3726,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "10078:4:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3729,
              "nodeType": "StructuredDocumentation",
              "src": "10109:90:2",
              "text": "@notice maps a user to a mapping of tokenContract to amount deposited in this contract"
            },
            "functionSelector": "bdfce5bf",
            "id": 3735,
            "mutability": "mutable",
            "name": "assetBalances",
            "nameLocation": "10260:13:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10205:68:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(address => mapping(address => uint256))"
            },
            "typeName": {
              "id": 3734,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3730,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "10213:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "10205:47:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(address => mapping(address => uint256))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3733,
                "keyName": "",
                "keyNameLocation": "-1:-1:-1",
                "keyType": {
                  "id": 3731,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "10232:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "10224:27:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueName": "",
                "valueNameLocation": "-1:-1:-1",
                "valueType": {
                  "id": 3732,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "10243:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "82073743",
            "id": 3739,
            "mutability": "mutable",
            "name": "assetDepositFee",
            "nameLocation": "10315:15:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10280:50:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 3738,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3736,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "10288:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "10280:27:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3737,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10299:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "8175cece",
            "id": 3743,
            "mutability": "mutable",
            "name": "assetWithdrawFee",
            "nameLocation": "10372:16:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10337:51:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 3742,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3740,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "10345:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "10337:27:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3741,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10356:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3744,
              "nodeType": "StructuredDocumentation",
              "src": "10395:88:2",
              "text": "@notice maps auditor Id to their address. Zero address means no such auditor exists."
            },
            "functionSelector": "b6ef564a",
            "id": 3748,
            "mutability": "mutable",
            "name": "auditors",
            "nameLocation": "10523:8:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10489:42:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_address_$",
              "typeString": "mapping(string => address)"
            },
            "typeName": {
              "id": 3747,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3745,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "10497:6:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "10489:26:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_address_$",
                "typeString": "mapping(string => address)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3746,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "10507:7:2",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3749,
              "nodeType": "StructuredDocumentation",
              "src": "10538:84:2",
              "text": "@notice maps an id number to a bool of whether such id has been used for an eNFT"
            },
            "id": 3753,
            "mutability": "mutable",
            "name": "nftIdUsed",
            "nameLocation": "10662:9:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10628:43:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
              "typeString": "mapping(uint256 => bool)"
            },
            "typeName": {
              "id": 3752,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3750,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10636:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "10628:24:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                "typeString": "mapping(uint256 => bool)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3751,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "10647:4:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3754,
              "nodeType": "StructuredDocumentation",
              "src": "10678:55:2",
              "text": "@notice maps an eNFT's id number to its detailsHash"
            },
            "id": 3758,
            "mutability": "mutable",
            "name": "detailsHash",
            "nameLocation": "10776:11:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10739:48:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
              "typeString": "mapping(uint256 => bytes32)"
            },
            "typeName": {
              "id": 3757,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3755,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10747:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "10739:27:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                "typeString": "mapping(uint256 => bytes32)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3756,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "10758:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3759,
              "nodeType": "StructuredDocumentation",
              "src": "10794:141:2",
              "text": "@notice maps an eNFT's id number to error string; contains the AudId of the Auditor node who so marked it, and may contain a reason code."
            },
            "functionSelector": "7da7283b",
            "id": 3763,
            "mutability": "mutable",
            "name": "idToAuditorGreylist",
            "nameLocation": "10975:19:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "10941:53:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
              "typeString": "mapping(uint256 => string)"
            },
            "typeName": {
              "id": 3762,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3760,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10949:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "10941:26:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                "typeString": "mapping(uint256 => string)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3761,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "10960:6:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3764,
              "nodeType": "StructuredDocumentation",
              "src": "11001:122:2",
              "text": "@notice sets dwell time for an eNFT before redemption by mapping eNFT id to (mint block.number + 'confirmationBlocks')"
            },
            "functionSelector": "a4ef5162",
            "id": 3768,
            "mutability": "mutable",
            "name": "enftUnlockTime",
            "nameLocation": "11164:14:2",
            "nodeType": "VariableDeclaration",
            "scope": 5834,
            "src": "11129:49:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 3767,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 3765,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11137:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "11129:27:2",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 3766,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11148:7:2",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 3769,
              "nodeType": "StructuredDocumentation",
              "src": "11366:132:2",
              "text": "certain events excluded for contract size considerations, such as unlikely/rare variable updates (iMVOStaking, treasury, etc.)"
            },
            "eventSelector": "235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a11133",
            "id": 3775,
            "name": "AdminUpdated",
            "nameLocation": "11510:12:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3771,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "11531:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "11523:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11523:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3773,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "status",
                  "nameLocation": "11543:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "11538:11:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3772,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11538:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11522:28:2"
            },
            "src": "11504:47:2"
          },
          {
            "anonymous": false,
            "eventSelector": "bf9e968c6a35f832352c8dfb5236ab1ce4a6dd21df144cd8c490951c1b08133a",
            "id": 3781,
            "name": "AuditorUpdated",
            "nameLocation": "11565:14:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3780,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3777,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "auditor",
                  "nameLocation": "11588:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3781,
                  "src": "11580:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11580:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3779,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "audId",
                  "nameLocation": "11604:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3781,
                  "src": "11597:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3778,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11597:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11579:31:2"
            },
            "src": "11559:52:2"
          },
          {
            "anonymous": false,
            "eventSelector": "228adef123a7fe6b727889b4d24b39b39de663428214fd757c6c501fb98d8494",
            "id": 3791,
            "name": "DepositERC20",
            "nameLocation": "11625:12:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3783,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "11664:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3791,
                  "src": "11648:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3782,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11648:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3785,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "tokenContract",
                  "nameLocation": "11689:13:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3791,
                  "src": "11681:21:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3784,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11681:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3787,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "11721:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3791,
                  "src": "11713:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3786,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11713:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3789,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "11746:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3791,
                  "src": "11738:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11738:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11637:123:2"
            },
            "src": "11619:142:2"
          },
          {
            "anonymous": false,
            "eventSelector": "57e8e547a3ef8d890c570ca885b0a8c441be3070e36b7ad4c7d6b9d9316ff2ce",
            "id": 3799,
            "name": "DepositETH",
            "nameLocation": "11775:10:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3793,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "11812:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3799,
                  "src": "11796:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11796:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3795,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "weiAmount",
                  "nameLocation": "11837:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3799,
                  "src": "11829:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3794,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11829:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3797,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "11865:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3799,
                  "src": "11857:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3796,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11857:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11785:94:2"
            },
            "src": "11769:111:2"
          },
          {
            "anonymous": false,
            "eventSelector": "a2e8a919645449f1c07cb9a6c38ec0709a2b4fd6655a4514db6cb4db0dbccb40",
            "id": 3806,
            "name": "GreyListAdd",
            "nameLocation": "11894:11:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3801,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "audId",
                  "nameLocation": "11913:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "11906:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3800,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11906:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3804,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "ids",
                  "nameLocation": "11930:3:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "11920:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3802,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "11920:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3803,
                    "nodeType": "ArrayTypeName",
                    "src": "11920:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11905:29:2"
            },
            "src": "11888:47:2"
          },
          {
            "anonymous": false,
            "eventSelector": "cb212940a2702565ddce0f677e5a8584ed288e9afad36654df10f548b05a6d48",
            "id": 3810,
            "name": "GreyListDeletion",
            "nameLocation": "11949:16:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3808,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "11974:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3810,
                  "src": "11966:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3807,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11966:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11965:12:2"
            },
            "src": "11943:35:2"
          },
          {
            "anonymous": false,
            "eventSelector": "96568b8cd8bec3b3f1734539526708d2164d43d3fc86a093a56d6b936665839e",
            "id": 3820,
            "name": "WithdrawERC20",
            "nameLocation": "11992:13:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3812,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "withdrawer",
                  "nameLocation": "12032:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3820,
                  "src": "12016:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3811,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12016:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3814,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "tokenContract",
                  "nameLocation": "12061:13:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3820,
                  "src": "12053:21:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3813,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12053:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3816,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "12093:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3820,
                  "src": "12085:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3815,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12085:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3818,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "12118:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3820,
                  "src": "12110:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3817,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12110:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12005:127:2"
            },
            "src": "11986:147:2"
          },
          {
            "anonymous": false,
            "eventSelector": "33414635cb2f2957fad92617dadad2a2a914b1914a9db56a5836fe13d56ef6f5",
            "id": 3828,
            "name": "WithdrawETH",
            "nameLocation": "12147:11:2",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3827,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3822,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "withdrawer",
                  "nameLocation": "12185:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3828,
                  "src": "12169:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3821,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12169:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3824,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "weiAmount",
                  "nameLocation": "12214:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3828,
                  "src": "12206:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12206:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3826,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "12242:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3828,
                  "src": "12234:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3825,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12234:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12158:98:2"
            },
            "src": "12141:116:2"
          },
          {
            "body": {
              "id": 3842,
              "nodeType": "Block",
              "src": "12690:82:2",
              "statements": [
                {
                  "condition": {
                    "id": 3836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "12705:19:2",
                    "subExpression": {
                      "baseExpression": {
                        "id": 3833,
                        "name": "adminStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3728,
                        "src": "12706:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3835,
                      "indexExpression": {
                        "id": 3834,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3831,
                        "src": "12718:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "12706:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3840,
                  "nodeType": "IfStatement",
                  "src": "12701:51:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3837,
                        "name": "Enshroud_NotAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3867,
                        "src": "12733:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 3838,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12733:19:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 3839,
                    "nodeType": "RevertStatement",
                    "src": "12726:26:2"
                  }
                },
                {
                  "id": 3841,
                  "nodeType": "PlaceholderStatement",
                  "src": "12763:1:2"
                }
              ]
            },
            "documentation": {
              "id": 3829,
              "nodeType": "StructuredDocumentation",
              "src": "12447:203:2",
              "text": "@notice requires \"_addr\" to have a true 'adminStatus' mapping\n @dev implemented in this manner to allow external contracts to pass an address (i.e. MVOStaking) rather than assuming msg.sender"
            },
            "id": 3843,
            "name": "onlyAdmin",
            "nameLocation": "12665:9:2",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3831,
                  "mutability": "mutable",
                  "name": "_addr",
                  "nameLocation": "12683:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3843,
                  "src": "12675:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3830,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12675:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12674:15:2"
            },
            "src": "12656:116:2",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "errorSelector": "367ccb18",
            "id": 3845,
            "name": "Enshroud_AmountMismatch",
            "nameLocation": "12965:23:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3844,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12988:2:2"
            },
            "src": "12959:32:2"
          },
          {
            "errorSelector": "57b109fe",
            "id": 3847,
            "name": "Enshroud_ArrayTooLong",
            "nameLocation": "13003:21:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13024:2:2"
            },
            "src": "12997:30:2"
          },
          {
            "errorSelector": "9021b570",
            "id": 3849,
            "name": "Enshroud_ENFTStillLocked",
            "nameLocation": "13039:24:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3848,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13063:2:2"
            },
            "src": "13033:33:2"
          },
          {
            "errorSelector": "5c7c4916",
            "id": 3851,
            "name": "Enshroud_FeeTooLarge",
            "nameLocation": "13078:20:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3850,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13098:2:2"
            },
            "src": "13072:29:2"
          },
          {
            "errorSelector": "5e064ec5",
            "id": 3855,
            "name": "Enshroud_Greylisted",
            "nameLocation": "13113:19:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3853,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "13141:2:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3855,
                  "src": "13133:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13133:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13132:12:2"
            },
            "src": "13107:38:2"
          },
          {
            "errorSelector": "b5602927",
            "id": 3857,
            "name": "Enshroud_HashDoesNotMatch",
            "nameLocation": "13189:25:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3856,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13214:2:2"
            },
            "src": "13183:34:2"
          },
          {
            "errorSelector": "4b954e42",
            "id": 3859,
            "name": "Enshroud_InvalidID",
            "nameLocation": "13229:18:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3858,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13247:2:2"
            },
            "src": "13223:27:2"
          },
          {
            "errorSelector": "6a358631",
            "id": 3861,
            "name": "Enshroud_MVOSignaturesMissing",
            "nameLocation": "13262:29:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3860,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13291:2:2"
            },
            "src": "13256:38:2"
          },
          {
            "errorSelector": "b3c187af",
            "id": 3863,
            "name": "Enshroud_NoENFT",
            "nameLocation": "13306:15:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13321:2:2"
            },
            "src": "13300:24:2"
          },
          {
            "errorSelector": "759cb799",
            "id": 3865,
            "name": "Enshroud_NotAuditor",
            "nameLocation": "13336:19:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13355:2:2"
            },
            "src": "13330:28:2"
          },
          {
            "errorSelector": "4ba27c09",
            "id": 3867,
            "name": "Enshroud_NotAdmin",
            "nameLocation": "13370:17:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3866,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13387:2:2"
            },
            "src": "13364:26:2"
          },
          {
            "errorSelector": "d4de6b4b",
            "id": 3869,
            "name": "Enshroud_OnlyWETH",
            "nameLocation": "13402:17:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3868,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13419:2:2"
            },
            "src": "13396:26:2"
          },
          {
            "errorSelector": "41237e87",
            "id": 3871,
            "name": "Enshroud_ZeroMsgValue",
            "nameLocation": "13434:21:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3870,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13455:2:2"
            },
            "src": "13428:30:2"
          },
          {
            "errorSelector": "7769dad7",
            "id": 3873,
            "name": "Enshroud_OnlyDAOPool",
            "nameLocation": "13467:20:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3872,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13487:2:2"
            },
            "src": "13461:29:2"
          },
          {
            "errorSelector": "bac65e5b",
            "id": 3875,
            "name": "MulWadFailed",
            "nameLocation": "13502:12:2",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 3874,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13514:2:2"
            },
            "src": "13496:21:2"
          },
          {
            "body": {
              "id": 3994,
              "nodeType": "Block",
              "src": "15536:756:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3898,
                        "name": "_depositFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3887,
                        "src": "15551:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "id": 3899,
                        "name": "FEE_LIMIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3694,
                        "src": "15566:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15551:24:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3901,
                        "name": "_withdrawFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3889,
                        "src": "15579:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "id": 3902,
                        "name": "FEE_LIMIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3694,
                        "src": "15595:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15579:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15551:53:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3908,
                  "nodeType": "IfStatement",
                  "src": "15547:101:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 3905,
                        "name": "Enshroud_FeeTooLarge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3851,
                        "src": "15626:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 3906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15626:22:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 3907,
                    "nodeType": "RevertStatement",
                    "src": "15619:29:2"
                  }
                },
                {
                  "expression": {
                    "id": 3911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3909,
                      "name": "treasury",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3705,
                      "src": "15704:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3910,
                      "name": "_treasury",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3878,
                      "src": "15715:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "15704:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 3912,
                  "nodeType": "ExpressionStatement",
                  "src": "15704:20:2"
                },
                {
                  "expression": {
                    "id": 3915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3913,
                      "name": "weth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3699,
                      "src": "15735:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3914,
                      "name": "_weth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3880,
                      "src": "15742:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15735:12:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3916,
                  "nodeType": "ExpressionStatement",
                  "src": "15735:12:2"
                },
                {
                  "expression": {
                    "id": 3919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3917,
                      "name": "daiToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3688,
                      "src": "15752:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3918,
                      "name": "_dai",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3882,
                      "src": "15763:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15752:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3920,
                  "nodeType": "ExpressionStatement",
                  "src": "15752:15:2"
                },
                {
                  "expression": {
                    "id": 3923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3921,
                      "name": "confirmationBlocks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3701,
                      "src": "15778:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3922,
                      "name": "_confBlocks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3893,
                      "src": "15799:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15778:32:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3924,
                  "nodeType": "ExpressionStatement",
                  "src": "15778:32:2"
                },
                {
                  "expression": {
                    "id": 3927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3925,
                      "name": "baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3707,
                      "src": "15821:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3926,
                      "name": "_baseUri",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3895,
                      "src": "15831:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "15821:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 3928,
                  "nodeType": "ExpressionStatement",
                  "src": "15821:18:2"
                },
                {
                  "expression": {
                    "id": 3936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3929,
                        "name": "assetDepositFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3739,
                        "src": "15850:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3934,
                      "indexExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15874:1:2",
                            "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": 3931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "15866:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3930,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15866:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15866:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15850:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3935,
                      "name": "_depositFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3887,
                      "src": "15880:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15850:41:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3937,
                  "nodeType": "ExpressionStatement",
                  "src": "15850:41:2"
                },
                {
                  "expression": {
                    "id": 3945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3938,
                        "name": "assetWithdrawFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3743,
                        "src": "15902:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3943,
                      "indexExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15927:1:2",
                            "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": 3940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "15919:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3939,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15919:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15919:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15902:28:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3944,
                      "name": "_withdrawFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3889,
                      "src": "15933:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15902:43:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3946,
                  "nodeType": "ExpressionStatement",
                  "src": "15902:43:2"
                },
                {
                  "expression": {
                    "id": 3949,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3947,
                      "name": "requiredSigs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3709,
                      "src": "15956:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3948,
                      "name": "_requiredSigs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3891,
                      "src": "15971:13:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15956:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3950,
                  "nodeType": "ExpressionStatement",
                  "src": "15956:28:2"
                },
                {
                  "expression": {
                    "id": 3958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3951,
                        "name": "adminStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3728,
                        "src": "15995:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3956,
                      "indexExpression": {
                        "arguments": [
                          {
                            "id": 3954,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "16015:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                              "typeString": "contract EnshroudProtocol"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                              "typeString": "contract EnshroudProtocol"
                            }
                          ],
                          "id": 3953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "16007:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3952,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16007:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16007:13:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15995:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 3957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16024:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "15995:33:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3959,
                  "nodeType": "ExpressionStatement",
                  "src": "15995:33:2"
                },
                {
                  "expression": {
                    "id": 3964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3960,
                        "name": "adminStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3728,
                        "src": "16039:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3962,
                      "indexExpression": {
                        "id": 3961,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3878,
                        "src": "16051:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16039:22:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 3963,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16064:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "16039:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3965,
                  "nodeType": "ExpressionStatement",
                  "src": "16039:29:2"
                },
                {
                  "expression": {
                    "id": 3970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3966,
                      "name": "iWeth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3719,
                      "src": "16079:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$3391",
                        "typeString": "contract IWETH"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3968,
                          "name": "_weth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3880,
                          "src": "16093:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3967,
                        "name": "IWETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3391,
                        "src": "16087:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWETH_$3391_$",
                          "typeString": "type(contract IWETH)"
                        }
                      },
                      "id": 3969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16087:12:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$3391",
                        "typeString": "contract IWETH"
                      }
                    },
                    "src": "16079:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETH_$3391",
                      "typeString": "contract IWETH"
                    }
                  },
                  "id": 3971,
                  "nodeType": "ExpressionStatement",
                  "src": "16079:20:2"
                },
                {
                  "body": {
                    "id": 3992,
                    "nodeType": "Block",
                    "src": "16159:126:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 3986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3980,
                              "name": "adminStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3728,
                              "src": "16174:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 3984,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 3981,
                                "name": "_initialAdmins",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3885,
                                "src": "16186:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3983,
                              "indexExpression": {
                                "id": 3982,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3973,
                                "src": "16201:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16186:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16174:30:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 3985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16207:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16174:37:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3987,
                        "nodeType": "ExpressionStatement",
                        "src": "16174:37:2"
                      },
                      {
                        "id": 3991,
                        "nodeType": "UncheckedBlock",
                        "src": "16226:48:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 3989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "16255:3:2",
                              "subExpression": {
                                "id": 3988,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3973,
                                "src": "16257:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3990,
                            "nodeType": "ExpressionStatement",
                            "src": "16255:3:2"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3976,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3973,
                      "src": "16130:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3977,
                        "name": "_initialAdmins",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3885,
                        "src": "16134:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 3978,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16149:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "16134:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16130:25:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3993,
                  "initializationExpression": {
                    "assignments": [
                      3973
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3973,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "16123:1:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 3993,
                        "src": "16115:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3972,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16115:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3975,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3974,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16127:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16115:13:2"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "16110:175:2"
                }
              ]
            },
            "documentation": {
              "id": 3876,
              "nodeType": "StructuredDocumentation",
              "src": "13707:1515:2",
              "text": "@param _treasury: treasury address to receive 5% of deposit and withdraw fees for project operations.\n @param _weth: token contract address for WETH. Immutable. 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 for WETH9 on ETH mainnet.\n @param _dai: token contract address for DAI. Immutable. 0x6B175474E89094C44Da98b954EedeAC495271d0F for DAI on ETH mainnet.\n @param _initialAdmins: array of initial addresses with admin status. Should be at least 3 total initial admins, in order to initialise the MVOStaking address\n @param _depositFee: initial per-asset percentage fee from user upon successful shielding, in 18 decimals (which also corresponds to wei). Must be < 5e17.\n @param _withdrawFee: initial per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals (which also corresponds to wei). Must be < 5e17.\n @param _requiredSigs: immutable required number of MVO signatures for a valid Operations Block\n @param _confBlocks: set immutable variable 'confirmationBlocks', which provides the minimum \"dwell time\" for an eNFT before redemption\n @param _baseUri: baseURI for eNFTs, which does not operate as a normal \"baseURI\" but as a notification to check the event log of this protocol contract for the eNFT's id. This constructor-passed baseURI also removes the need for a uriFetcher\n @dev note math of fees. Currently a 5e16 fee corresponds to 5%, as all fees are calculated with a denominator of 1e18."
            },
            "id": 3995,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3896,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3878,
                  "mutability": "mutable",
                  "name": "_treasury",
                  "nameLocation": "15266:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15250:25:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 3877,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15250:15:2",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3880,
                  "mutability": "mutable",
                  "name": "_weth",
                  "nameLocation": "15294:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15286:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3879,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15286:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3882,
                  "mutability": "mutable",
                  "name": "_dai",
                  "nameLocation": "15318:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15310:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3881,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15310:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3885,
                  "mutability": "mutable",
                  "name": "_initialAdmins",
                  "nameLocation": "15350:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15333:31:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3883,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15333:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3884,
                    "nodeType": "ArrayTypeName",
                    "src": "15333:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3887,
                  "mutability": "mutable",
                  "name": "_depositFee",
                  "nameLocation": "15383:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15375:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3886,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15375:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3889,
                  "mutability": "mutable",
                  "name": "_withdrawFee",
                  "nameLocation": "15413:12:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15405:20:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15405:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3891,
                  "mutability": "mutable",
                  "name": "_requiredSigs",
                  "nameLocation": "15444:13:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15436:21:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15436:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3893,
                  "mutability": "mutable",
                  "name": "_confBlocks",
                  "nameLocation": "15476:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15468:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3892,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15468:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3895,
                  "mutability": "mutable",
                  "name": "_baseUri",
                  "nameLocation": "15512:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 3995,
                  "src": "15498:22:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3894,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15498:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15239:288:2"
            },
            "returnParameters": {
              "id": 3897,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15536:0:2"
            },
            "scope": 5834,
            "src": "15228:1064:2",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4007,
              "nodeType": "Block",
              "src": "16558:69:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 3999,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "16573:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4000,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16577:6:2",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "16573:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 4001,
                      "name": "weth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3699,
                      "src": "16587:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "16573:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4006,
                  "nodeType": "IfStatement",
                  "src": "16569:50:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4003,
                        "name": "Enshroud_OnlyWETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3869,
                        "src": "16600:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4004,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16600:19:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4005,
                    "nodeType": "RevertStatement",
                    "src": "16593:26:2"
                  }
                }
              ]
            },
            "documentation": {
              "id": 3996,
              "nodeType": "StructuredDocumentation",
              "src": "16300:225:2",
              "text": "@dev address(this) accepts ETH only from the WETH contract; 'depositEth()' must be used for ETH deposits, as ETH sent directly to address(this) will not cause an eNFT mint (and thus its ability to be eventually withdrawn)"
            },
            "id": 4008,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3997,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16538:2:2"
            },
            "returnParameters": {
              "id": 3998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16558:0:2"
            },
            "scope": 5834,
            "src": "16531:96:2",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4058,
              "nodeType": "Block",
              "src": "17002:519:2",
              "statements": [
                {
                  "assignments": [
                    4019
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4019,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "17020:7:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4058,
                      "src": "17013:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 4018,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "17013:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4031,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 4026,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "17052:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "17056:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "17052:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17044:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 4024,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "17044:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17044:19:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 4023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "17037:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 4022,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "17037:6:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17037:27:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "17030:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 4020,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "17030:6:2",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17030:35:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17013:52:2"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 4033,
                        "name": "_mvoStaking",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4011,
                        "src": "17099:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4034,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4019,
                        "src": "17112:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 4035,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3674,
                          "src": "17121:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                            "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                          }
                        },
                        "id": 4036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "17135:10:2",
                        "memberName": "MVOStaking",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3669,
                        "src": "17121:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4037,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17147:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4032,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5821,
                      "src": "17080:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$3674_$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum EnshroudProtocol.ApprovalTypes,string memory) returns (bool)"
                      }
                    },
                    "id": 4038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17080:70:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4057,
                  "nodeType": "IfStatement",
                  "src": "17076:438:2",
                  "trueBody": {
                    "id": 4056,
                    "nodeType": "Block",
                    "src": "17152:362:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 4043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4039,
                              "name": "adminStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3728,
                              "src": "17305:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4041,
                            "indexExpression": {
                              "id": 4040,
                              "name": "_mvoStaking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4011,
                              "src": "17317:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17305:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 4042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17332:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "17305:31:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4044,
                        "nodeType": "ExpressionStatement",
                        "src": "17305:31:2"
                      },
                      {
                        "expression": {
                          "id": 4049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4045,
                            "name": "iMVOStaking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3716,
                            "src": "17351:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                              "typeString": "contract IMVOStaking_EnshroudProtocol"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 4047,
                                "name": "_mvoStaking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4011,
                                "src": "17394:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4046,
                              "name": "IMVOStaking_EnshroudProtocol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3412,
                              "src": "17365:28:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMVOStaking_EnshroudProtocol_$3412_$",
                                "typeString": "type(contract IMVOStaking_EnshroudProtocol)"
                              }
                            },
                            "id": 4048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17365:41:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                              "typeString": "contract IMVOStaking_EnshroudProtocol"
                            }
                          },
                          "src": "17351:55:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                            "typeString": "contract IMVOStaking_EnshroudProtocol"
                          }
                        },
                        "id": 4050,
                        "nodeType": "ExpressionStatement",
                        "src": "17351:55:2"
                      },
                      {
                        "expression": {
                          "id": 4054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "17467:35:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4051,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3724,
                              "src": "17474:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                              }
                            },
                            "id": 4053,
                            "indexExpression": {
                              "id": 4052,
                              "name": "_mvoStaking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4011,
                              "src": "17490:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17474:28:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$3685_storage",
                              "typeString": "struct EnshroudProtocol.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4055,
                        "nodeType": "ExpressionStatement",
                        "src": "17467:35:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4009,
              "nodeType": "StructuredDocumentation",
              "src": "16635:263:2",
              "text": "@notice initialise (or replace) the MVOStaking contract address, by three different admins\n @dev must be set after mvoStaking contract is deployed, and before the protocol is used\n @param _mvoStaking: contract address for MVO storage and logic"
            },
            "functionSelector": "828492b0",
            "id": 4059,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 4014,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "16990:3:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4015,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16994:6:2",
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "16990:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4016,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4013,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "16980:9:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3843,
                  "src": "16980:9:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "16980:21:2"
              }
            ],
            "name": "setMVOStakingAddress",
            "nameLocation": "16913:20:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4011,
                  "mutability": "mutable",
                  "name": "_mvoStaking",
                  "nameLocation": "16952:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4059,
                  "src": "16944:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4010,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16944:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16933:37:2"
            },
            "returnParameters": {
              "id": 4017,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17002:0:2"
            },
            "scope": 5834,
            "src": "16904:617:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4145,
              "nodeType": "Block",
              "src": "18051:1365:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 4067,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "18066:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4068,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "18070:5:2",
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "src": "18066:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 4069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18079:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18066:14:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4074,
                  "nodeType": "IfStatement",
                  "src": "18062:50:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4071,
                        "name": "Enshroud_ZeroMsgValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3871,
                        "src": "18089:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18089:23:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4073,
                    "nodeType": "RevertStatement",
                    "src": "18082:30:2"
                  }
                },
                {
                  "assignments": [
                    4076
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4076,
                      "mutability": "mutable",
                      "name": "_depositFeeAmount",
                      "nameLocation": "18133:17:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4145,
                      "src": "18125:25:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4075,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18125:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4087,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4078,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "18179:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "18183:5:2",
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "src": "18179:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 4080,
                          "name": "assetDepositFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3739,
                          "src": "18203:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 4085,
                        "indexExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18227:1:2",
                              "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": 4082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18219:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4081,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18219:7:2",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18219:10:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18203:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4077,
                      "name": "_mulWadDown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "18153:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 4086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18153:88:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18125:116:2"
                },
                {
                  "assignments": [
                    4089
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4089,
                      "mutability": "mutable",
                      "name": "_treasuryFeeAmount",
                      "nameLocation": "18260:18:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4145,
                      "src": "18252:26:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4088,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18252:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4094,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 4091,
                        "name": "_depositFeeAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4076,
                        "src": "18307:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 4092,
                        "name": "treasuryFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3713,
                        "src": "18339:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4090,
                      "name": "_mulWadDown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "18281:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 4093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18281:80:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18252:109:2"
                },
                {
                  "assignments": [
                    4096
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4096,
                      "mutability": "mutable",
                      "name": "_netDeposit",
                      "nameLocation": "18380:11:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4145,
                      "src": "18372:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4095,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18372:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4097,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18372:19:2"
                },
                {
                  "id": 4113,
                  "nodeType": "UncheckedBlock",
                  "src": "18404:303:2",
                  "statements": [
                    {
                      "expression": {
                        "id": 4103,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 4098,
                          "name": "_netDeposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4096,
                          "src": "18542:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 4099,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "18556:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "18560:5:2",
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "src": "18556:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 4101,
                            "name": "_depositFeeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4076,
                            "src": "18568:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18556:29:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18542:43:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4104,
                      "nodeType": "ExpressionStatement",
                      "src": "18542:43:2"
                    },
                    {
                      "expression": {
                        "id": 4111,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 4105,
                              "name": "assetBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3735,
                              "src": "18649:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 4108,
                            "indexExpression": {
                              "id": 4106,
                              "name": "_depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4062,
                              "src": "18663:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18649:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 4109,
                          "indexExpression": {
                            "id": 4107,
                            "name": "weth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3699,
                            "src": "18675:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "18649:31:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "id": 4110,
                          "name": "_netDeposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4096,
                          "src": "18684:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18649:46:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4112,
                      "nodeType": "ExpressionStatement",
                      "src": "18649:46:2"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 4114,
                          "name": "iWeth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3719,
                          "src": "18874:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH_$3391",
                            "typeString": "contract IWETH"
                          }
                        },
                        "id": 4116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "18880:7:2",
                        "memberName": "deposit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3385,
                        "src": "18874:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$__$returns$__$",
                          "typeString": "function () payable external"
                        }
                      },
                      "id": 4118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 4117,
                          "name": "_netDeposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4096,
                          "src": "18895:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "18874:33:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                        "typeString": "function () payable external"
                      }
                    },
                    "id": 4119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18874:35:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4120,
                  "nodeType": "ExpressionStatement",
                  "src": "18874:35:2"
                },
                {
                  "id": 4137,
                  "nodeType": "UncheckedBlock",
                  "src": "18987:356:2",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 4124,
                            "name": "treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3705,
                            "src": "19044:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "id": 4125,
                            "name": "_treasuryFeeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4089,
                            "src": "19054:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4121,
                            "name": "SafeTransferLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7894,
                            "src": "19012:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_SafeTransferLib_$7894_$",
                              "typeString": "type(library SafeTransferLib)"
                            }
                          },
                          "id": 4123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19028:15:2",
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7855,
                          "src": "19012:31:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 4126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19012:61:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4127,
                      "nodeType": "ExpressionStatement",
                      "src": "19012:61:2"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 4131,
                            "name": "daoPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3703,
                            "src": "19252:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4132,
                              "name": "_depositFeeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4076,
                              "src": "19278:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 4133,
                              "name": "_treasuryFeeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4089,
                              "src": "19298:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19278:38:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 4128,
                            "name": "SafeTransferLib",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7894,
                            "src": "19202:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_SafeTransferLib_$7894_$",
                              "typeString": "type(library SafeTransferLib)"
                            }
                          },
                          "id": 4130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19218:15:2",
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7855,
                          "src": "19202:31:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 4135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19202:129:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4136,
                      "nodeType": "ExpressionStatement",
                      "src": "19202:129:2"
                    }
                  ]
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 4139,
                        "name": "_depositor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4062,
                        "src": "19369:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4140,
                        "name": "_netDeposit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4096,
                        "src": "19381:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 4141,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "19394:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 4142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19400:7:2",
                        "memberName": "chainid",
                        "nodeType": "MemberAccess",
                        "src": "19394:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4138,
                      "name": "DepositETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3799,
                      "src": "19358:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 4143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19358:50:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4144,
                  "nodeType": "EmitStatement",
                  "src": "19353:55:2"
                }
              ]
            },
            "documentation": {
              "id": 4060,
              "nodeType": "StructuredDocumentation",
              "src": "17529:446:2",
              "text": "@notice deposit ETH/applicable native token. Msg.value is amount of deposit, which is in wei (18 decimals).\n @dev deposited ETH is immediately converted to WETH to address(this) (except for deposit fee sent to treasury and daoPool, which remains in ETH)\n @param _depositor: address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)"
            },
            "functionSelector": "ad9d4ba3",
            "id": 4146,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4065,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4064,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "18038:12:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 7829,
                  "src": "18038:12:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "18038:12:2"
              }
            ],
            "name": "depositEth",
            "nameLocation": "17990:10:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4062,
                  "mutability": "mutable",
                  "name": "_depositor",
                  "nameLocation": "18009:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4146,
                  "src": "18001:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4061,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18001:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18000:20:2"
            },
            "returnParameters": {
              "id": 4066,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18051:0:2"
            },
            "scope": 5834,
            "src": "17981:1435:2",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4187,
              "nodeType": "Block",
              "src": "20268:581:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 4158,
                        "name": "assetDepositFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3739,
                        "src": "20414:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 4160,
                      "indexExpression": {
                        "id": 4159,
                        "name": "_tokenContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4151,
                        "src": "20430:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "20414:31:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 4161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20449:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "20414:36:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4185,
                    "nodeType": "Block",
                    "src": "20648:194:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4177,
                              "name": "_depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4149,
                              "src": "20696:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4178,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4151,
                              "src": "20725:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4179,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4153,
                              "src": "20758:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 4180,
                                "name": "assetDepositFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3739,
                                "src": "20784:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 4182,
                              "indexExpression": {
                                "id": 4181,
                                "name": "_tokenContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4151,
                                "src": "20800:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20784:31:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4176,
                            "name": "_depositTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5176,
                            "src": "20663:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 4183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20663:167:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4184,
                        "nodeType": "ExpressionStatement",
                        "src": "20663:167:2"
                      }
                    ]
                  },
                  "id": 4186,
                  "nodeType": "IfStatement",
                  "src": "20410:432:2",
                  "trueBody": {
                    "id": 4175,
                    "nodeType": "Block",
                    "src": "20452:190:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4164,
                              "name": "_depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4149,
                              "src": "20500:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4165,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4151,
                              "src": "20529:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4166,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4153,
                              "src": "20562:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 4167,
                                "name": "assetDepositFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3739,
                                "src": "20588:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 4172,
                              "indexExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20612:1:2",
                                    "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": 4169,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "20604:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4168,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20604:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20604:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20588:27:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4163,
                            "name": "_depositTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5176,
                            "src": "20467:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 4173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20467:163:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4174,
                        "nodeType": "ExpressionStatement",
                        "src": "20467:163:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4147,
              "nodeType": "StructuredDocumentation",
              "src": "19424:698:2",
              "text": "@notice deposit ERC20-compatible tokens after '_depositor' approved address(this) for '_amount' of tokens in the '_tokenContract'\n @dev _amount of tokens must first be approved for transferFrom by address(this). While there is no token validity check here, the MVO layer will check when later generating operations block\n @param _depositor: address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)\n @param _tokenContract: ERC20-compatible token contract address\n @param _amount: amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())"
            },
            "functionSelector": "39dc5ef2",
            "id": 4188,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4156,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4155,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "20255:12:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 7829,
                  "src": "20255:12:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "20255:12:2"
              }
            ],
            "name": "depositTokens",
            "nameLocation": "20137:13:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4154,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4149,
                  "mutability": "mutable",
                  "name": "_depositor",
                  "nameLocation": "20169:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4188,
                  "src": "20161:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20161:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4151,
                  "mutability": "mutable",
                  "name": "_tokenContract",
                  "nameLocation": "20198:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4188,
                  "src": "20190:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20190:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4153,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "20231:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4188,
                  "src": "20223:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4152,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20223:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20150:95:2"
            },
            "returnParameters": {
              "id": 4157,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20268:0:2"
            },
            "scope": 5834,
            "src": "20128:721:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4282,
              "nodeType": "Block",
              "src": "21813:1223:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 4210,
                      "name": "_tokenContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4191,
                      "src": "21919:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "id": 4211,
                      "name": "daiToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3688,
                      "src": "21937:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "21919:26:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4247,
                    "nodeType": "Block",
                    "src": "22244:269:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4235,
                              "name": "_depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4193,
                              "src": "22330:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 4238,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "22367:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                ],
                                "id": 4237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22359:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4236,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22359:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22359:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4240,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4195,
                              "src": "22391:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4241,
                              "name": "_deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4199,
                              "src": "22417:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4242,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4201,
                              "src": "22445:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 4243,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4203,
                              "src": "22465:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4244,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4205,
                              "src": "22485:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4232,
                                  "name": "_tokenContract",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4191,
                                  "src": "22289:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4231,
                                "name": "IERC20Permit_EnshroudProtocol",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3382,
                                "src": "22259:29:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Permit_EnshroudProtocol_$3382_$",
                                  "typeString": "type(contract IERC20Permit_EnshroudProtocol)"
                                }
                              },
                              "id": 4233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22259:45:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Permit_EnshroudProtocol_$3382",
                                "typeString": "contract IERC20Permit_EnshroudProtocol"
                              }
                            },
                            "id": 4234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "22305:6:2",
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3355,
                            "src": "22259:52:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 4245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22259:242:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4246,
                        "nodeType": "ExpressionStatement",
                        "src": "22259:242:2"
                      }
                    ]
                  },
                  "id": 4248,
                  "nodeType": "IfStatement",
                  "src": "21915:598:2",
                  "trueBody": {
                    "id": 4230,
                    "nodeType": "Block",
                    "src": "21947:291:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4217,
                              "name": "_depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4193,
                              "src": "22033:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 4220,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "22070:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                ],
                                "id": 4219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22062:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4218,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22062:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22062:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4222,
                              "name": "_nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4197,
                              "src": "22094:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4223,
                              "name": "_deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4199,
                              "src": "22119:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 4224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22147:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 4225,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4201,
                              "src": "22170:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 4226,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4203,
                              "src": "22190:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4227,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4205,
                              "src": "22210:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4214,
                                  "name": "_tokenContract",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4191,
                                  "src": "21992:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4213,
                                "name": "IERC20Permit_EnshroudProtocol",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3382,
                                "src": "21962:29:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Permit_EnshroudProtocol_$3382_$",
                                  "typeString": "type(contract IERC20Permit_EnshroudProtocol)"
                                }
                              },
                              "id": 4215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21962:45:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Permit_EnshroudProtocol_$3382",
                                "typeString": "contract IERC20Permit_EnshroudProtocol"
                              }
                            },
                            "id": 4216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "22008:6:2",
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3374,
                            "src": "21962:52:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bool,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 4228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21962:264:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4229,
                        "nodeType": "ExpressionStatement",
                        "src": "21962:264:2"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    4250
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4250,
                      "mutability": "mutable",
                      "name": "_depositFee",
                      "nameLocation": "22664:11:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4282,
                      "src": "22656:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4249,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22656:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4254,
                  "initialValue": {
                    "baseExpression": {
                      "id": 4251,
                      "name": "assetDepositFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3739,
                      "src": "22678:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 4253,
                    "indexExpression": {
                      "id": 4252,
                      "name": "_tokenContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4191,
                      "src": "22694:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22678:31:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22656:53:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 4255,
                      "name": "_depositFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4250,
                      "src": "22724:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 4256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22739:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "22724:16:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4280,
                    "nodeType": "Block",
                    "src": "22938:91:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4273,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "22968:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22972:6:2",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "22968:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4275,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4191,
                              "src": "22980:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4276,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4195,
                              "src": "22996:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4277,
                              "name": "_depositFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4250,
                              "src": "23005:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4272,
                            "name": "_depositTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5176,
                            "src": "22953:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 4278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22953:64:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4279,
                        "nodeType": "ExpressionStatement",
                        "src": "22953:64:2"
                      }
                    ]
                  },
                  "id": 4281,
                  "nodeType": "IfStatement",
                  "src": "22720:309:2",
                  "trueBody": {
                    "id": 4271,
                    "nodeType": "Block",
                    "src": "22742:190:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4259,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "22790:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22794:6:2",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "22790:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4261,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4191,
                              "src": "22819:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4262,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4195,
                              "src": "22852:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 4263,
                                "name": "assetDepositFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3739,
                                "src": "22878:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 4268,
                              "indexExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "22902:1:2",
                                    "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": 4265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "22894:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4264,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22894:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22894:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22878:27:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4258,
                            "name": "_depositTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5176,
                            "src": "22757:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 4269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22757:163:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4270,
                        "nodeType": "ExpressionStatement",
                        "src": "22757:163:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4189,
              "nodeType": "StructuredDocumentation",
              "src": "20857:689:2",
              "text": "@notice deposit an ERC20-compatible asset which supports gasless ERC20Permit via EIP2612 to approve this address for transferFrom msg.sender\n @param _tokenContract: ERC20-compatible token contract address\n @param _depositor: address of depositor, to whom the EIP712 signature corresponds (often, msg.sender)\n @param _amount: amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())\n @param _nonce: user's nonce on the erc20 contract, for replay protection\n @param _deadline: deadline for permit approval usage\n @param v: ECDSA sig param\n @param r: ECDSA sig param\n @param s: ECDSA sig param"
            },
            "functionSelector": "4f79a0a6",
            "id": 4283,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4208,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4207,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "21800:12:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 7829,
                  "src": "21800:12:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "21800:12:2"
              }
            ],
            "name": "depositTokensWithPermit",
            "nameLocation": "21561:23:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4191,
                  "mutability": "mutable",
                  "name": "_tokenContract",
                  "nameLocation": "21603:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21595:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4190,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21595:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4193,
                  "mutability": "mutable",
                  "name": "_depositor",
                  "nameLocation": "21636:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21628:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4192,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21628:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4195,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "21665:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21657:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4194,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21657:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4197,
                  "mutability": "mutable",
                  "name": "_nonce",
                  "nameLocation": "21691:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21683:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4196,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21683:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4199,
                  "mutability": "mutable",
                  "name": "_deadline",
                  "nameLocation": "21716:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21708:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4198,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21708:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4201,
                  "mutability": "mutable",
                  "name": "v",
                  "nameLocation": "21742:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21736:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4200,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "21736:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4203,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "21762:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21754:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4202,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21754:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4205,
                  "mutability": "mutable",
                  "name": "s",
                  "nameLocation": "21782:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4283,
                  "src": "21774:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4204,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21774:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21584:206:2"
            },
            "returnParameters": {
              "id": 4209,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21813:0:2"
            },
            "scope": 5834,
            "src": "21552:1484:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4342,
              "nodeType": "Block",
              "src": "23917:542:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 4295,
                          "name": "assetBalances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3735,
                          "src": "23932:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                          }
                        },
                        "id": 4298,
                        "indexExpression": {
                          "expression": {
                            "id": 4296,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "23946:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "23950:6:2",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "23946:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "23932:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 4300,
                      "indexExpression": {
                        "id": 4299,
                        "name": "_tokenContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4292,
                        "src": "23958:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23932:41:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 4301,
                        "name": "_opsInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4287,
                        "src": "23976:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      "id": 4302,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "23985:6:2",
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3656,
                      "src": "23976:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23932:59:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4307,
                  "nodeType": "IfStatement",
                  "src": "23928:110:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4304,
                        "name": "Enshroud_AmountMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3845,
                        "src": "24013:23:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24013:25:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4306,
                    "nodeType": "RevertStatement",
                    "src": "24006:32:2"
                  }
                },
                {
                  "id": 4318,
                  "nodeType": "UncheckedBlock",
                  "src": "24049:97:2",
                  "statements": [
                    {
                      "expression": {
                        "id": 4316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 4308,
                              "name": "assetBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3735,
                              "src": "24074:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 4312,
                            "indexExpression": {
                              "expression": {
                                "id": 4309,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "24088:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "24092:6:2",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "24088:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "24074:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 4313,
                          "indexExpression": {
                            "id": 4311,
                            "name": "_tokenContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4292,
                            "src": "24100:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "24074:41:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "expression": {
                            "id": 4314,
                            "name": "_opsInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4287,
                            "src": "24119:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                              "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                            }
                          },
                          "id": 4315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24128:6:2",
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3656,
                          "src": "24119:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "24074:60:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4317,
                      "nodeType": "ExpressionStatement",
                      "src": "24074:60:2"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4320,
                        "name": "_opsInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4287,
                        "src": "24200:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      {
                        "id": 4321,
                        "name": "_mvoInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4290,
                        "src": "24210:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                        }
                      },
                      {
                        "expression": {
                          "id": 4322,
                          "name": "Flag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3638,
                          "src": "24220:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                            "typeString": "type(enum EnshroudProtocol.Flag)"
                          }
                        },
                        "id": 4323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "24225:15:2",
                        "memberName": "MintFromDeposit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3635,
                        "src": "24220:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                        },
                        {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      ],
                      "id": 4319,
                      "name": "_validateInputs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5651,
                      "src": "24184:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OpsInfo_$3659_calldata_ptr_$_t_struct$_MVOinfo_$3667_calldata_ptr_$_t_enum$_Flag_$3638_$returns$__$",
                        "typeString": "function (struct EnshroudProtocol.OpsInfo calldata,struct EnshroudProtocol.MVOinfo calldata,enum EnshroudProtocol.Flag)"
                      }
                    },
                    "id": 4324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24184:57:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4325,
                  "nodeType": "ExpressionStatement",
                  "src": "24184:57:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4327,
                        "name": "_opsInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4287,
                        "src": "24286:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 4328,
                            "name": "_opsInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4287,
                            "src": "24296:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                              "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                            }
                          },
                          "id": 4329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24305:9:2",
                          "memberName": "outputIds",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3651,
                          "src": "24296:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                            "typeString": "uint256[] calldata"
                          }
                        },
                        "id": 4330,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "24315:6:2",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "24296:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 4331,
                          "name": "Flag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3638,
                          "src": "24323:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                            "typeString": "type(enum EnshroudProtocol.Flag)"
                          }
                        },
                        "id": 4332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "24328:15:2",
                        "memberName": "MintFromDeposit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3635,
                        "src": "24323:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      ],
                      "id": 4326,
                      "name": "_mintENFTs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5323,
                      "src": "24275:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OpsInfo_$3659_calldata_ptr_$_t_uint256_$_t_enum$_Flag_$3638_$returns$__$",
                        "typeString": "function (struct EnshroudProtocol.OpsInfo calldata,uint256,enum EnshroudProtocol.Flag)"
                      }
                    },
                    "id": 4333,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24275:69:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4334,
                  "nodeType": "ExpressionStatement",
                  "src": "24275:69:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4338,
                          "name": "_mvoInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "24435:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                            "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                          }
                        },
                        "id": 4339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "24444:6:2",
                        "memberName": "mvoIDs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3666,
                        "src": "24435:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      ],
                      "expression": {
                        "id": 4335,
                        "name": "iMVOStaking",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3716,
                        "src": "24411:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                          "typeString": "contract IMVOStaking_EnshroudProtocol"
                        }
                      },
                      "id": 4337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "24423:11:2",
                      "memberName": "awardPoints",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3397,
                      "src": "24411:23:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory[] memory) external"
                      }
                    },
                    "id": 4340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24411:40:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4341,
                  "nodeType": "ExpressionStatement",
                  "src": "24411:40:2"
                }
              ]
            },
            "documentation": {
              "id": 4284,
              "nodeType": "StructuredDocumentation",
              "src": "23044:716:2",
              "text": "@notice called by an address which has already deposited assets into this contract to mintENFTs based on some amount of those assets up to msg.sender's 'assetBalances'\n @param _opsInfo: OpsInfo struct containing all of the necessary Operations Block information\n @param _mvoInfo: MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata\n @param _tokenContract: ERC20-compatible token contract address; pass the 'weth' address to mint an eNFT for ETH deposits\n @dev because msg.sender is used to check the 'assetBalances' mapping (to prevent spoofing on a _depositor variable), other contracts using this function will have to use delegatecall"
            },
            "functionSelector": "90976e39",
            "id": 4343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mintENFTsFromDeposit",
            "nameLocation": "23775:20:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4287,
                  "mutability": "mutable",
                  "name": "_opsInfo",
                  "nameLocation": "23823:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4343,
                  "src": "23806:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.OpsInfo"
                  },
                  "typeName": {
                    "id": 4286,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4285,
                      "name": "OpsInfo",
                      "nameLocations": [
                        "23806:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3659,
                      "src": "23806:7:2"
                    },
                    "referencedDeclaration": 3659,
                    "src": "23806:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_OpsInfo_$3659_storage_ptr",
                      "typeString": "struct EnshroudProtocol.OpsInfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4290,
                  "mutability": "mutable",
                  "name": "_mvoInfo",
                  "nameLocation": "23859:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4343,
                  "src": "23842:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.MVOinfo"
                  },
                  "typeName": {
                    "id": 4289,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4288,
                      "name": "MVOinfo",
                      "nameLocations": [
                        "23842:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3667,
                      "src": "23842:7:2"
                    },
                    "referencedDeclaration": 3667,
                    "src": "23842:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVOinfo_$3667_storage_ptr",
                      "typeString": "struct EnshroudProtocol.MVOinfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4292,
                  "mutability": "mutable",
                  "name": "_tokenContract",
                  "nameLocation": "23886:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4343,
                  "src": "23878:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23878:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23795:112:2"
            },
            "returnParameters": {
              "id": 4294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23917:0:2"
            },
            "scope": 5834,
            "src": "23766:693:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4453,
              "nodeType": "Block",
              "src": "25308:1332:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4356,
                        "name": "_enftInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4347,
                        "src": "25360:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      {
                        "id": 4357,
                        "name": "_mvoInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4350,
                        "src": "25371:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                        }
                      },
                      {
                        "expression": {
                          "id": 4358,
                          "name": "Flag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3638,
                          "src": "25381:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                            "typeString": "type(enum EnshroudProtocol.Flag)"
                          }
                        },
                        "id": 4359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "25386:5:2",
                        "memberName": "Spend",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3636,
                        "src": "25381:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                        },
                        {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      ],
                      "id": 4355,
                      "name": "_validateInputs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5651,
                      "src": "25344:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OpsInfo_$3659_calldata_ptr_$_t_struct$_MVOinfo_$3667_calldata_ptr_$_t_enum$_Flag_$3638_$returns$__$",
                        "typeString": "function (struct EnshroudProtocol.OpsInfo calldata,struct EnshroudProtocol.MVOinfo calldata,enum EnshroudProtocol.Flag)"
                      }
                    },
                    "id": 4360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25344:48:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4361,
                  "nodeType": "ExpressionStatement",
                  "src": "25344:48:2"
                },
                {
                  "body": {
                    "id": 4435,
                    "nodeType": "Block",
                    "src": "25571:853:2",
                    "statements": [
                      {
                        "assignments": [
                          4372
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4372,
                            "mutability": "mutable",
                            "name": "_spendID",
                            "nameLocation": "25594:8:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 4435,
                            "src": "25586:16:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4371,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25586:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4377,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 4373,
                              "name": "_enftInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4347,
                              "src": "25605:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                              }
                            },
                            "id": 4374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25615:8:2",
                            "memberName": "inputIds",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3648,
                            "src": "25605:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 4376,
                          "indexExpression": {
                            "id": 4375,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4363,
                            "src": "25624:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25605:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25586:40:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 4378,
                              "name": "enftUnlockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3768,
                              "src": "25645:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4380,
                            "indexExpression": {
                              "id": 4379,
                              "name": "_spendID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4372,
                              "src": "25660:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "25645:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 4381,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "25672:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25678:6:2",
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "src": "25672:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25645:39:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4387,
                        "nodeType": "IfStatement",
                        "src": "25641:95:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4384,
                              "name": "Enshroud_ENFTStillLocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3849,
                              "src": "25710:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25710:26:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4386,
                          "nodeType": "RevertStatement",
                          "src": "25703:33:2"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 4390,
                                    "name": "idToAuditorGreylist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3763,
                                    "src": "25761:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                      "typeString": "mapping(uint256 => string storage ref)"
                                    }
                                  },
                                  "id": 4392,
                                  "indexExpression": {
                                    "id": 4391,
                                    "name": "_spendID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4372,
                                    "src": "25781:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "25761:29:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 4389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "25755:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 4388,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25755:5:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25755:36:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes storage pointer"
                              }
                            },
                            "id": 4394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25792:6:2",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "25755:43:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25802:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "25755:48:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4401,
                        "nodeType": "IfStatement",
                        "src": "25751:107:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 4398,
                                "name": "_spendID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4372,
                                "src": "25849:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4397,
                              "name": "Enshroud_Greylisted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3855,
                              "src": "25829:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$",
                                "typeString": "function (uint256) pure returns (error)"
                              }
                            },
                            "id": 4399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25829:29:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4400,
                          "nodeType": "RevertStatement",
                          "src": "25822:36:2"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4402,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3446,
                                "src": "26105:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 4405,
                              "indexExpression": {
                                "expression": {
                                  "id": 4403,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "26115:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26119:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "26115:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26105:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4407,
                            "indexExpression": {
                              "id": 4406,
                              "name": "_spendID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4372,
                              "src": "26127:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "26105:31:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26140:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "26105:36:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "documentation": "@dev entire transaction will revert if msg.sender does not have corresponding eNFT for a _spendID",
                        "id": 4413,
                        "nodeType": "IfStatement",
                        "src": "26101:66:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4410,
                              "name": "Enshroud_NoENFT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3863,
                              "src": "26150:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26150:17:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4412,
                          "nodeType": "RevertStatement",
                          "src": "26143:24:2"
                        }
                      },
                      {
                        "id": 4417,
                        "nodeType": "UncheckedBlock",
                        "src": "26184:48:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 4415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "26213:3:2",
                              "subExpression": {
                                "id": 4414,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4363,
                                "src": "26215:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4416,
                            "nodeType": "ExpressionStatement",
                            "src": "26213:3:2"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 4421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "26293:28:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4418,
                              "name": "detailsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "26300:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                "typeString": "mapping(uint256 => bytes32)"
                              }
                            },
                            "id": 4420,
                            "indexExpression": {
                              "id": 4419,
                              "name": "_spendID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4372,
                              "src": "26312:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "26300:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4422,
                        "nodeType": "ExpressionStatement",
                        "src": "26293:28:2"
                      },
                      {
                        "expression": {
                          "id": 4426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "26336:31:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4423,
                              "name": "enftUnlockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3768,
                              "src": "26343:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4425,
                            "indexExpression": {
                              "id": 4424,
                              "name": "_spendID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4372,
                              "src": "26358:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "26343:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4427,
                        "nodeType": "ExpressionStatement",
                        "src": "26336:31:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4429,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "26388:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26392:6:2",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "26388:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4431,
                              "name": "_spendID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4372,
                              "src": "26400:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 4432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26410:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 4428,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3578,
                            "src": "26382:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 4433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26382:30:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4434,
                        "nodeType": "ExpressionStatement",
                        "src": "26382:30:2"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 4366,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4363,
                      "src": "25538:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 4367,
                          "name": "_enftInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4347,
                          "src": "25542:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                            "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                          }
                        },
                        "id": 4368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25552:8:2",
                        "memberName": "inputIds",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3648,
                        "src": "25542:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 4369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25561:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "25542:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25538:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4436,
                  "initializationExpression": {
                    "assignments": [
                      4363
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4363,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "25531:1:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 4436,
                        "src": "25523:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4362,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25523:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 4365,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 4364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25535:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25523:13:2"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "25518:906:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4438,
                        "name": "_enftInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4347,
                        "src": "26474:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 4439,
                            "name": "_enftInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4347,
                            "src": "26485:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                              "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                            }
                          },
                          "id": 4440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "26495:10:2",
                          "memberName": "recipients",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3642,
                          "src": "26485:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                            "typeString": "address[] calldata"
                          }
                        },
                        "id": 4441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "26506:6:2",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "26485:27:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 4442,
                          "name": "Flag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3638,
                          "src": "26514:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                            "typeString": "type(enum EnshroudProtocol.Flag)"
                          }
                        },
                        "id": 4443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "26519:5:2",
                        "memberName": "Spend",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3636,
                        "src": "26514:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      ],
                      "id": 4437,
                      "name": "_mintENFTs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5323,
                      "src": "26463:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OpsInfo_$3659_calldata_ptr_$_t_uint256_$_t_enum$_Flag_$3638_$returns$__$",
                        "typeString": "function (struct EnshroudProtocol.OpsInfo calldata,uint256,enum EnshroudProtocol.Flag)"
                      }
                    },
                    "id": 4444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26463:62:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4445,
                  "nodeType": "ExpressionStatement",
                  "src": "26463:62:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4449,
                          "name": "_mvoInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4350,
                          "src": "26616:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                            "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                          }
                        },
                        "id": 4450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "26625:6:2",
                        "memberName": "mvoIDs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3666,
                        "src": "26616:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      ],
                      "expression": {
                        "id": 4446,
                        "name": "iMVOStaking",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3716,
                        "src": "26592:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                          "typeString": "contract IMVOStaking_EnshroudProtocol"
                        }
                      },
                      "id": 4448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "26604:11:2",
                      "memberName": "awardPoints",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3397,
                      "src": "26592:23:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory[] memory) external"
                      }
                    },
                    "id": 4451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26592:40:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4452,
                  "nodeType": "ExpressionStatement",
                  "src": "26592:40:2"
                }
              ]
            },
            "documentation": {
              "id": 4344,
              "nodeType": "StructuredDocumentation",
              "src": "24467:713:2",
              "text": "@notice for a holder of eNFT(s) to spend their eNFT(s) (after receiving new OperationsBlock) for new eNFT(s) to be subsequently minted, without publicly compromising the corresponding asset or amount in the subsequently minted eNFTs\n @dev only necessary to check msg.sender's balanceOf to burn the spent eNFT -- the new eNFTs will be produced by calling _mintNewENFTs(). Call only after new OperationsBlock received for subsequent eNFT mints.\n @param _enftInfo: OpsInfo struct containing all of the necessary OperationsBlock information to mint new eNFTs\n @param _mvoInfo: MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs"
            },
            "functionSelector": "d02121a8",
            "id": 4454,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4353,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4352,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "25295:12:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 7829,
                  "src": "25295:12:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "25295:12:2"
              }
            ],
            "name": "spendENFTs",
            "nameLocation": "25195:10:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4347,
                  "mutability": "mutable",
                  "name": "_enftInfo",
                  "nameLocation": "25233:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4454,
                  "src": "25216:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.OpsInfo"
                  },
                  "typeName": {
                    "id": 4346,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4345,
                      "name": "OpsInfo",
                      "nameLocations": [
                        "25216:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3659,
                      "src": "25216:7:2"
                    },
                    "referencedDeclaration": 3659,
                    "src": "25216:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_OpsInfo_$3659_storage_ptr",
                      "typeString": "struct EnshroudProtocol.OpsInfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4350,
                  "mutability": "mutable",
                  "name": "_mvoInfo",
                  "nameLocation": "25270:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4454,
                  "src": "25253:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.MVOinfo"
                  },
                  "typeName": {
                    "id": 4349,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4348,
                      "name": "MVOinfo",
                      "nameLocations": [
                        "25253:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3667,
                      "src": "25253:7:2"
                    },
                    "referencedDeclaration": 3667,
                    "src": "25253:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVOinfo_$3667_storage_ptr",
                      "typeString": "struct EnshroudProtocol.MVOinfo"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25205:80:2"
            },
            "returnParameters": {
              "id": 4354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25308:0:2"
            },
            "scope": 5834,
            "src": "25186:1454:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4642,
              "nodeType": "Block",
              "src": "27706:2654:2",
              "statements": [
                {
                  "assignments": [
                    4475
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4475,
                      "mutability": "mutable",
                      "name": "_amt",
                      "nameLocation": "27791:4:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4642,
                      "src": "27783:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4474,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27783:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4476,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27783:12:2"
                },
                {
                  "assignments": [
                    4478
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4478,
                      "mutability": "mutable",
                      "name": "_redeems",
                      "nameLocation": "27816:8:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4642,
                      "src": "27808:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4477,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "27808:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4482,
                  "initialValue": {
                    "expression": {
                      "expression": {
                        "id": 4479,
                        "name": "_opsInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4458,
                        "src": "27827:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      "id": 4480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "27836:8:2",
                      "memberName": "inputIds",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3648,
                      "src": "27827:17:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 4481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "27845:6:2",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "27827:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27808:43:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 4483,
                        "name": "_redeems",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4478,
                        "src": "27868:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "expression": {
                          "id": 4484,
                          "name": "_rand",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4467,
                          "src": "27880:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes16_$dyn_calldata_ptr",
                            "typeString": "bytes16[] calldata"
                          }
                        },
                        "id": 4485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "27886:6:2",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "27880:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "27868:24:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 4487,
                        "name": "_redeems",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4478,
                        "src": "27896:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "expression": {
                          "id": 4488,
                          "name": "_amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4464,
                          "src": "27908:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                            "typeString": "uint256[] calldata"
                          }
                        },
                        "id": 4489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "27917:6:2",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "27908:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "27896:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27868:55:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4495,
                  "nodeType": "IfStatement",
                  "src": "27864:97:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4492,
                        "name": "LengthMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3439,
                        "src": "27945:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4493,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "27945:16:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4494,
                    "nodeType": "RevertStatement",
                    "src": "27938:23:2"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4497,
                        "name": "_opsInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4458,
                        "src": "28015:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      {
                        "id": 4498,
                        "name": "_mvoInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4461,
                        "src": "28025:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                        }
                      },
                      {
                        "expression": {
                          "id": 4499,
                          "name": "Flag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3638,
                          "src": "28035:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                            "typeString": "type(enum EnshroudProtocol.Flag)"
                          }
                        },
                        "id": 4500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "28040:8:2",
                        "memberName": "Withdraw",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3637,
                        "src": "28035:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                        },
                        {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      ],
                      "id": 4496,
                      "name": "_validateInputs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5651,
                      "src": "27999:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OpsInfo_$3659_calldata_ptr_$_t_struct$_MVOinfo_$3667_calldata_ptr_$_t_enum$_Flag_$3638_$returns$__$",
                        "typeString": "function (struct EnshroudProtocol.OpsInfo calldata,struct EnshroudProtocol.MVOinfo calldata,enum EnshroudProtocol.Flag)"
                      }
                    },
                    "id": 4501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27999:50:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4502,
                  "nodeType": "ExpressionStatement",
                  "src": "27999:50:2"
                },
                {
                  "body": {
                    "id": 4603,
                    "nodeType": "Block",
                    "src": "28098:1332:2",
                    "statements": [
                      {
                        "assignments": [
                          4511
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4511,
                            "mutability": "mutable",
                            "name": "_xId",
                            "nameLocation": "28121:4:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 4603,
                            "src": "28113:12:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4510,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "28113:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4516,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 4512,
                              "name": "_opsInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4458,
                              "src": "28128:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                              }
                            },
                            "id": 4513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "28137:8:2",
                            "memberName": "inputIds",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3648,
                            "src": "28128:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 4515,
                          "indexExpression": {
                            "id": 4514,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4504,
                            "src": "28146:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28128:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28113:35:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4517,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3446,
                                "src": "28167:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 4520,
                              "indexExpression": {
                                "expression": {
                                  "id": 4518,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "28177:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "28181:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "28177:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "28167:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4522,
                            "indexExpression": {
                              "id": 4521,
                              "name": "_xId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "28189:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28167:27:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28198:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "28167:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4528,
                        "nodeType": "IfStatement",
                        "src": "28163:62:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4525,
                              "name": "Enshroud_NoENFT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3863,
                              "src": "28208:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28208:17:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4527,
                          "nodeType": "RevertStatement",
                          "src": "28201:24:2"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 4529,
                              "name": "enftUnlockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3768,
                              "src": "28244:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4531,
                            "indexExpression": {
                              "id": 4530,
                              "name": "_xId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "28259:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28244:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "id": 4532,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "28267:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "28273:6:2",
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "src": "28267:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28244:35:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4538,
                        "nodeType": "IfStatement",
                        "src": "28240:91:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4535,
                              "name": "Enshroud_ENFTStillLocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3849,
                              "src": "28305:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28305:26:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4537,
                          "nodeType": "RevertStatement",
                          "src": "28298:33:2"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 4541,
                                    "name": "idToAuditorGreylist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3763,
                                    "src": "28356:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                      "typeString": "mapping(uint256 => string storage ref)"
                                    }
                                  },
                                  "id": 4543,
                                  "indexExpression": {
                                    "id": 4542,
                                    "name": "_xId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4511,
                                    "src": "28376:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "28356:25:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 4540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28350:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 4539,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28350:5:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28350:32:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes storage pointer"
                              }
                            },
                            "id": 4545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "28383:6:2",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "28350:39:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28393:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "28350:44:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4552,
                        "nodeType": "IfStatement",
                        "src": "28346:99:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 4549,
                                "name": "_xId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4511,
                                "src": "28440:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4548,
                              "name": "Enshroud_Greylisted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3855,
                              "src": "28420:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$",
                                "typeString": "function (uint256) pure returns (error)"
                              }
                            },
                            "id": 4550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28420:25:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4551,
                          "nodeType": "RevertStatement",
                          "src": "28413:32:2"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 4553,
                              "name": "detailsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "28705:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                "typeString": "mapping(uint256 => bytes32)"
                              }
                            },
                            "id": 4555,
                            "indexExpression": {
                              "id": 4554,
                              "name": "_xId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "28717:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28705:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 4559,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "28812:3:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "28816:6:2",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "28812:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4561,
                                    "name": "_xId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4511,
                                    "src": "28849:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4562,
                                    "name": "_tokenContract",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4469,
                                    "src": "28880:14:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 4563,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4464,
                                      "src": "28921:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 4565,
                                    "indexExpression": {
                                      "id": 4564,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4504,
                                      "src": "28930:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "28921:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 4566,
                                      "name": "_rand",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4467,
                                      "src": "28959:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes16_$dyn_calldata_ptr",
                                        "typeString": "bytes16[] calldata"
                                      }
                                    },
                                    "id": 4568,
                                    "indexExpression": {
                                      "id": 4567,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4504,
                                      "src": "28965:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "28959:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4557,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "28775:3:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 4558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "28779:6:2",
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "28775:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 4569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28775:215:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4556,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "28743:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28743:266:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "28705:304:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4575,
                        "nodeType": "IfStatement",
                        "src": "28683:376:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4572,
                              "name": "Enshroud_HashDoesNotMatch",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3857,
                              "src": "29032:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29032:27:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4574,
                          "nodeType": "RevertStatement",
                          "src": "29025:34:2"
                        }
                      },
                      {
                        "expression": {
                          "id": 4579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "29122:24:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4576,
                              "name": "detailsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "29129:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                "typeString": "mapping(uint256 => bytes32)"
                              }
                            },
                            "id": 4578,
                            "indexExpression": {
                              "id": 4577,
                              "name": "_xId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "29141:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "29129:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4580,
                        "nodeType": "ExpressionStatement",
                        "src": "29122:24:2"
                      },
                      {
                        "expression": {
                          "id": 4584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "29161:27:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4581,
                              "name": "enftUnlockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3768,
                              "src": "29168:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4583,
                            "indexExpression": {
                              "id": 4582,
                              "name": "_xId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "29183:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "29168:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4585,
                        "nodeType": "ExpressionStatement",
                        "src": "29161:27:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4587,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "29209:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "29213:6:2",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "29209:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4589,
                              "name": "_xId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4511,
                              "src": "29221:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 4590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "29227:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 4586,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3578,
                            "src": "29203:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 4591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29203:26:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4592,
                        "nodeType": "ExpressionStatement",
                        "src": "29203:26:2"
                      },
                      {
                        "id": 4602,
                        "nodeType": "UncheckedBlock",
                        "src": "29246:173:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 4597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4593,
                                "name": "_amt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4475,
                                "src": "29275:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 4594,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4464,
                                  "src": "29283:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 4596,
                                "indexExpression": {
                                  "id": 4595,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4504,
                                  "src": "29292:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "29283:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "29275:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4598,
                            "nodeType": "ExpressionStatement",
                            "src": "29275:19:2"
                          },
                          {
                            "expression": {
                              "id": 4600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "29400:3:2",
                              "subExpression": {
                                "id": 4599,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4504,
                                "src": "29402:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4601,
                            "nodeType": "ExpressionStatement",
                            "src": "29400:3:2"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 4507,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4504,
                      "src": "28082:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 4508,
                      "name": "_redeems",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4478,
                      "src": "28086:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "28082:12:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4604,
                  "initializationExpression": {
                    "assignments": [
                      4504
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4504,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "28075:1:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 4604,
                        "src": "28067:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4503,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28067:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 4506,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 4505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "28079:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "28067:13:2"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "28062:1368:2"
                },
                {
                  "assignments": [
                    4606
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4606,
                      "mutability": "mutable",
                      "name": "_amountTotal",
                      "nameLocation": "29632:12:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4642,
                      "src": "29624:20:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4605,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "29624:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4609,
                  "initialValue": {
                    "expression": {
                      "id": 4607,
                      "name": "_opsInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4458,
                      "src": "29647:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                        "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                      }
                    },
                    "id": 4608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "29656:6:2",
                    "memberName": "amount",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3656,
                    "src": "29647:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "29624:38:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 4610,
                      "name": "_amt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4475,
                      "src": "29677:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 4611,
                      "name": "_amountTotal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4606,
                      "src": "29684:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "29677:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4616,
                  "nodeType": "IfStatement",
                  "src": "29673:57:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4613,
                        "name": "Enshroud_AmountMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3845,
                        "src": "29705:23:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4614,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "29705:25:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4615,
                    "nodeType": "RevertStatement",
                    "src": "29698:32:2"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 4617,
                      "name": "_amt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4475,
                      "src": "30122:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 4618,
                      "name": "_amountTotal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4606,
                      "src": "30129:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30122:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "documentation": "@dev all relevant members (recipients, detailsHashes, outputIds, metadata) of the _opsInfo struct will have a length of 1, the number of mints is 1, and the Flag value is Withdraw",
                  "id": 4627,
                  "nodeType": "IfStatement",
                  "src": "30118:63:2",
                  "trueBody": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 4621,
                          "name": "_opsInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4458,
                          "src": "30154:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                            "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                          }
                        },
                        {
                          "hexValue": "31",
                          "id": 4622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30164:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        {
                          "expression": {
                            "id": 4623,
                            "name": "Flag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3638,
                            "src": "30167:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                              "typeString": "type(enum EnshroudProtocol.Flag)"
                            }
                          },
                          "id": 4624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30172:8:2",
                          "memberName": "Withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3637,
                          "src": "30167:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Flag_$3638",
                            "typeString": "enum EnshroudProtocol.Flag"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                            "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          {
                            "typeIdentifier": "t_enum$_Flag_$3638",
                            "typeString": "enum EnshroudProtocol.Flag"
                          }
                        ],
                        "id": 4620,
                        "name": "_mintENFTs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5323,
                        "src": "30143:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OpsInfo_$3659_calldata_ptr_$_t_uint256_$_t_enum$_Flag_$3638_$returns$__$",
                          "typeString": "function (struct EnshroudProtocol.OpsInfo calldata,uint256,enum EnshroudProtocol.Flag)"
                        }
                      },
                      "id": 4625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30143:38:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 4626,
                    "nodeType": "ExpressionStatement",
                    "src": "30143:38:2"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4629,
                        "name": "_amountTotal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4606,
                        "src": "30204:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 4630,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "30218:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "30222:6:2",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "30218:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4632,
                        "name": "_tokenContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4469,
                        "src": "30230:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4628,
                      "name": "_withdraw",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5469,
                      "src": "30194:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address,address)"
                      }
                    },
                    "id": 4633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30194:51:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4634,
                  "nodeType": "ExpressionStatement",
                  "src": "30194:51:2"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4638,
                          "name": "_mvoInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4461,
                          "src": "30336:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                            "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                          }
                        },
                        "id": 4639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "30345:6:2",
                        "memberName": "mvoIDs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3666,
                        "src": "30336:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      ],
                      "expression": {
                        "id": 4635,
                        "name": "iMVOStaking",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3716,
                        "src": "30312:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                          "typeString": "contract IMVOStaking_EnshroudProtocol"
                        }
                      },
                      "id": 4637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "30324:11:2",
                      "memberName": "awardPoints",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3397,
                      "src": "30312:23:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory[] memory) external"
                      }
                    },
                    "id": 4640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30312:40:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4641,
                  "nodeType": "ExpressionStatement",
                  "src": "30312:40:2"
                }
              ]
            },
            "documentation": {
              "id": 4455,
              "nodeType": "StructuredDocumentation",
              "src": "26648:813:2",
              "text": "@notice for eNFT holder to redeem their eNFT(s) for asset withdrawal via their decrypted eNFT metadata\n @param _opsInfo: OpsInfo struct containing all of the necessary Operations Block information\n @param _mvoInfo: MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs\n @param _amounts: array of amounts of tokens/asset requested for withdrawal, in order by _id\n @param _rand: array of optional randomly generated bytes, represented in base64, generated client-side.\n @param _tokenContract: token contract address requested for withdraw. Provide zero address for ETH/native token withdrawal.\n @dev caller will be able to access decrypted eNFT metadata off chain in order to supply info to this function"
            },
            "functionSelector": "a1cbb281",
            "id": 4643,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4472,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4471,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "27693:12:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 7829,
                  "src": "27693:12:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "27693:12:2"
              }
            ],
            "name": "redeemENFTsAndWithdraw",
            "nameLocation": "27476:22:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4470,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4458,
                  "mutability": "mutable",
                  "name": "_opsInfo",
                  "nameLocation": "27526:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4643,
                  "src": "27509:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.OpsInfo"
                  },
                  "typeName": {
                    "id": 4457,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4456,
                      "name": "OpsInfo",
                      "nameLocations": [
                        "27509:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3659,
                      "src": "27509:7:2"
                    },
                    "referencedDeclaration": 3659,
                    "src": "27509:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_OpsInfo_$3659_storage_ptr",
                      "typeString": "struct EnshroudProtocol.OpsInfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4461,
                  "mutability": "mutable",
                  "name": "_mvoInfo",
                  "nameLocation": "27562:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4643,
                  "src": "27545:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.MVOinfo"
                  },
                  "typeName": {
                    "id": 4460,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4459,
                      "name": "MVOinfo",
                      "nameLocations": [
                        "27545:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3667,
                      "src": "27545:7:2"
                    },
                    "referencedDeclaration": 3667,
                    "src": "27545:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVOinfo_$3667_storage_ptr",
                      "typeString": "struct EnshroudProtocol.MVOinfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4464,
                  "mutability": "mutable",
                  "name": "_amounts",
                  "nameLocation": "27600:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4643,
                  "src": "27581:27:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4462,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "27581:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4463,
                    "nodeType": "ArrayTypeName",
                    "src": "27581:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4467,
                  "mutability": "mutable",
                  "name": "_rand",
                  "nameLocation": "27638:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4643,
                  "src": "27619:24:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes16_$dyn_calldata_ptr",
                    "typeString": "bytes16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4465,
                      "name": "bytes16",
                      "nodeType": "ElementaryTypeName",
                      "src": "27619:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes16",
                        "typeString": "bytes16"
                      }
                    },
                    "id": 4466,
                    "nodeType": "ArrayTypeName",
                    "src": "27619:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes16_$dyn_storage_ptr",
                      "typeString": "bytes16[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4469,
                  "mutability": "mutable",
                  "name": "_tokenContract",
                  "nameLocation": "27662:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4643,
                  "src": "27654:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4468,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27654:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27498:185:2"
            },
            "returnParameters": {
              "id": 4473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27706:0:2"
            },
            "scope": 5834,
            "src": "27467:2893:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4725,
              "nodeType": "Block",
              "src": "30843:714:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 4655,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "30858:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4656,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "30862:6:2",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "30858:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "baseExpression": {
                        "id": 4657,
                        "name": "auditors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3748,
                        "src": "30872:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_address_$",
                          "typeString": "mapping(string memory => address)"
                        }
                      },
                      "id": 4659,
                      "indexExpression": {
                        "id": 4658,
                        "name": "_audId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4646,
                        "src": "30881:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "30872:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "30858:30:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4664,
                  "nodeType": "IfStatement",
                  "src": "30854:64:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4661,
                        "name": "Enshroud_NotAuditor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3865,
                        "src": "30897:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4662,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30897:21:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4663,
                    "nodeType": "RevertStatement",
                    "src": "30890:28:2"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 4665,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4649,
                        "src": "30933:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 4666,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "30938:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "30933:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 4667,
                      "name": "ARRAY_LIMIT",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3691,
                      "src": "30947:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30933:25:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4672,
                  "nodeType": "IfStatement",
                  "src": "30929:61:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4669,
                        "name": "Enshroud_ArrayTooLong",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3847,
                        "src": "30967:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30967:23:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4671,
                    "nodeType": "RevertStatement",
                    "src": "30960:30:2"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 4673,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4649,
                        "src": "31005:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 4674,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "31010:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "31005:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "id": 4675,
                        "name": "_reasons",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4652,
                        "src": "31020:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 4676,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "31029:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "31020:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "31005:30:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4681,
                  "nodeType": "IfStatement",
                  "src": "31001:59:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4678,
                        "name": "LengthMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3439,
                        "src": "31044:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "31044:16:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4680,
                    "nodeType": "RevertStatement",
                    "src": "31037:23:2"
                  }
                },
                {
                  "body": {
                    "id": 4718,
                    "nodeType": "Block",
                    "src": "31112:341:2",
                    "statements": [
                      {
                        "assignments": [
                          4691
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4691,
                            "mutability": "mutable",
                            "name": "_id",
                            "nameLocation": "31135:3:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 4718,
                            "src": "31127:11:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4690,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31127:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4695,
                        "initialValue": {
                          "baseExpression": {
                            "id": 4692,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4649,
                            "src": "31141:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 4694,
                          "indexExpression": {
                            "id": 4693,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4683,
                            "src": "31146:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "31141:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31127:21:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 4698,
                                    "name": "idToAuditorGreylist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3763,
                                    "src": "31226:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                      "typeString": "mapping(uint256 => string storage ref)"
                                    }
                                  },
                                  "id": 4700,
                                  "indexExpression": {
                                    "id": 4699,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4691,
                                    "src": "31246:3:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "31226:24:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 4697,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "31220:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 4696,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "31220:5:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31220:31:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes storage pointer"
                              }
                            },
                            "id": 4702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "31252:6:2",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "31220:38:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31262:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "31220:43:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4713,
                        "nodeType": "IfStatement",
                        "src": "31216:101:2",
                        "trueBody": {
                          "expression": {
                            "id": 4711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "baseExpression": {
                                "id": 4705,
                                "name": "idToAuditorGreylist",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3763,
                                "src": "31279:19:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                  "typeString": "mapping(uint256 => string storage ref)"
                                }
                              },
                              "id": 4707,
                              "indexExpression": {
                                "id": 4706,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4691,
                                "src": "31299:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "31279:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "baseExpression": {
                                "id": 4708,
                                "name": "_reasons",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4652,
                                "src": "31306:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "string calldata[] calldata"
                                }
                              },
                              "id": 4710,
                              "indexExpression": {
                                "id": 4709,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4683,
                                "src": "31315:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "31306:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            "src": "31279:38:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "id": 4712,
                          "nodeType": "ExpressionStatement",
                          "src": "31279:38:2"
                        }
                      },
                      {
                        "id": 4717,
                        "nodeType": "UncheckedBlock",
                        "src": "31394:48:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 4715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "31423:3:2",
                              "subExpression": {
                                "id": 4714,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4683,
                                "src": "31425:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4716,
                            "nodeType": "ExpressionStatement",
                            "src": "31423:3:2"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 4686,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4683,
                      "src": "31093:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 4687,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4649,
                        "src": "31097:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 4688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "31102:6:2",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "31097:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "31093:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4719,
                  "initializationExpression": {
                    "assignments": [
                      4683
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4683,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "31086:1:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 4719,
                        "src": "31078:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31078:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 4685,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 4684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "31090:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "31078:13:2"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "31073:380:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 4721,
                        "name": "_audId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4646,
                        "src": "31536:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "id": 4722,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4649,
                        "src": "31544:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "id": 4720,
                      "name": "GreyListAdd",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3806,
                      "src": "31524:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,uint256[] memory)"
                      }
                    },
                    "id": 4723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31524:25:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4724,
                  "nodeType": "EmitStatement",
                  "src": "31519:30:2"
                }
              ]
            },
            "documentation": {
              "id": 4644,
              "nodeType": "StructuredDocumentation",
              "src": "30368:324:2",
              "text": "@notice for an auditor to change eNFT(s) greylist status\n @param _audId: ID of the auditor calling this function\n @param _ids: array of eNFT IDs for which the auditor is altering greylist status\n @param _reasons: array of strings corresponding to the reason for each respective '_ids' greylisting"
            },
            "functionSelector": "2e2805dd",
            "id": 4726,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "auditorGreyList",
            "nameLocation": "30707:15:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4653,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4646,
                  "mutability": "mutable",
                  "name": "_audId",
                  "nameLocation": "30749:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4726,
                  "src": "30733:22:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4645,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30733:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4649,
                  "mutability": "mutable",
                  "name": "_ids",
                  "nameLocation": "30785:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4726,
                  "src": "30766:23:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4647,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "30766:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4648,
                    "nodeType": "ArrayTypeName",
                    "src": "30766:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4652,
                  "mutability": "mutable",
                  "name": "_reasons",
                  "nameLocation": "30818:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4726,
                  "src": "30800:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4650,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "30800:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 4651,
                    "nodeType": "ArrayTypeName",
                    "src": "30800:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30722:111:2"
            },
            "returnParameters": {
              "id": 4654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30843:0:2"
            },
            "scope": 5834,
            "src": "30698:859:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4783,
              "nodeType": "Block",
              "src": "31788:621:2",
              "statements": [
                {
                  "assignments": [
                    4737
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4737,
                      "mutability": "mutable",
                      "name": "_addr",
                      "nameLocation": "31928:5:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4783,
                      "src": "31920:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4736,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "31920:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4745,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 4742,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4729,
                            "src": "31952:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 4741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "31944:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 4740,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "31944:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31944:12:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 4739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "31936:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 4738,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "31936:7:2",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31936:21:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "31920:37:2"
                },
                {
                  "assignments": [
                    4747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4747,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "31975:7:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4783,
                      "src": "31968:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 4746,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "31968:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4759,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 4754,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "32007:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "32011:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "32007:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "31999:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 4752,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "31999:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31999:19:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 4751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "31992:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 4750,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "31992:6:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4757,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31992:27:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "31985:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 4748,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "31985:6:2",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4758,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31985:35:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "31968:52:2"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 4761,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4737,
                        "src": "32054:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4762,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4747,
                        "src": "32061:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 4763,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3674,
                          "src": "32070:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                            "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                          }
                        },
                        "id": 4764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "32084:8:2",
                        "memberName": "GreyList",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3670,
                        "src": "32070:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32094:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4760,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5821,
                      "src": "32035:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$3674_$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum EnshroudProtocol.ApprovalTypes,string memory) returns (bool)"
                      }
                    },
                    "id": 4766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32035:62:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4782,
                  "nodeType": "IfStatement",
                  "src": "32031:371:2",
                  "trueBody": {
                    "id": 4781,
                    "nodeType": "Block",
                    "src": "32099:303:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 4770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "32228:31:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4767,
                              "name": "idToAuditorGreylist",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3763,
                              "src": "32235:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                "typeString": "mapping(uint256 => string storage ref)"
                              }
                            },
                            "id": 4769,
                            "indexExpression": {
                              "id": 4768,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4729,
                              "src": "32255:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "32235:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4771,
                        "nodeType": "ExpressionStatement",
                        "src": "32228:31:2"
                      },
                      {
                        "expression": {
                          "id": 4775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "32320:29:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4772,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3724,
                              "src": "32327:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                              }
                            },
                            "id": 4774,
                            "indexExpression": {
                              "id": 4773,
                              "name": "_addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4737,
                              "src": "32343:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "32327:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$3685_storage",
                              "typeString": "struct EnshroudProtocol.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4776,
                        "nodeType": "ExpressionStatement",
                        "src": "32320:29:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4778,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4729,
                              "src": "32386:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4777,
                            "name": "GreyListDeletion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3810,
                            "src": "32369:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 4779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32369:21:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4780,
                        "nodeType": "EmitStatement",
                        "src": "32364:26:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4727,
              "nodeType": "StructuredDocumentation",
              "src": "31565:143:2",
              "text": "@notice upon call by three admins, remove an eNFT's greylist status\n @param _id: ID of greylisted eNFT, to be removed from greylist"
            },
            "functionSelector": "c46ee844",
            "id": 4784,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 4732,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "31776:3:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "31780:6:2",
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "31776:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4734,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4731,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "31766:9:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3843,
                  "src": "31766:9:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "31766:21:2"
              }
            ],
            "name": "removeGreylistStatus",
            "nameLocation": "31723:20:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4729,
                  "mutability": "mutable",
                  "name": "_id",
                  "nameLocation": "31752:3:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4784,
                  "src": "31744:11:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31744:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31743:13:2"
            },
            "returnParameters": {
              "id": 4735,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31788:0:2"
            },
            "scope": 5834,
            "src": "31714:695:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4845,
              "nodeType": "Block",
              "src": "32744:491:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 4799,
                                "name": "_audId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4789,
                                "src": "32763:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              ],
                              "id": 4798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "32757:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 4797,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "32757:5:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "32757:13:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 4801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "32771:6:2",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "32757:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 4802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32780:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "32757:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4796,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "32749:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32749:33:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4805,
                  "nodeType": "ExpressionStatement",
                  "src": "32749:33:2"
                },
                {
                  "assignments": [
                    4807
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4807,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "32800:7:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4845,
                      "src": "32793:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 4806,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "32793:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4819,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 4814,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "32832:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "32836:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "32832:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "32824:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 4812,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "32824:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "32824:19:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 4811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "32817:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 4810,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "32817:6:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32817:27:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "32810:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 4808,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "32810:6:2",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32810:35:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32793:52:2"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 4821,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4787,
                        "src": "32879:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4822,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4807,
                        "src": "32886:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 4823,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3674,
                          "src": "32895:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                            "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                          }
                        },
                        "id": 4824,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "32909:7:2",
                        "memberName": "Auditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3671,
                        "src": "32895:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        }
                      },
                      {
                        "id": 4825,
                        "name": "_audId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4789,
                        "src": "32918:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 4820,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5821,
                      "src": "32860:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$3674_$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum EnshroudProtocol.ApprovalTypes,string memory) returns (bool)"
                      }
                    },
                    "id": 4826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32860:65:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4844,
                  "nodeType": "IfStatement",
                  "src": "32856:372:2",
                  "trueBody": {
                    "id": 4843,
                    "nodeType": "Block",
                    "src": "32927:301:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 4831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4827,
                              "name": "auditors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3748,
                              "src": "33054:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_address_$",
                                "typeString": "mapping(string memory => address)"
                              }
                            },
                            "id": 4829,
                            "indexExpression": {
                              "id": 4828,
                              "name": "_audId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4789,
                              "src": "33063:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "33054:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4830,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4787,
                            "src": "33073:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "33054:24:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4832,
                        "nodeType": "ExpressionStatement",
                        "src": "33054:24:2"
                      },
                      {
                        "expression": {
                          "id": 4836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "33138:29:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4833,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3724,
                              "src": "33145:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                              }
                            },
                            "id": 4835,
                            "indexExpression": {
                              "id": 4834,
                              "name": "_addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4787,
                              "src": "33161:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "33145:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$3685_storage",
                              "typeString": "struct EnshroudProtocol.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4837,
                        "nodeType": "ExpressionStatement",
                        "src": "33138:29:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4839,
                              "name": "_addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4787,
                              "src": "33202:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4840,
                              "name": "_audId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4789,
                              "src": "33209:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 4838,
                            "name": "AuditorUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3781,
                            "src": "33187:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (address,string memory)"
                            }
                          },
                          "id": 4841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33187:29:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4842,
                        "nodeType": "EmitStatement",
                        "src": "33182:34:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4785,
              "nodeType": "StructuredDocumentation",
              "src": "32417:203:2",
              "text": "@notice for three admins to update an auditor's status\n @param _addr: address of auditor, or zero address to remove an auditor\n @param _audId: ID of the auditor being updated by admin"
            },
            "functionSelector": "1e6b8080",
            "id": 4846,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 4792,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "32732:3:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "32736:6:2",
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "32732:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4794,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4791,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "32722:9:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3843,
                  "src": "32722:9:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "32722:21:2"
              }
            ],
            "name": "updateAuditor",
            "nameLocation": "32635:13:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4787,
                  "mutability": "mutable",
                  "name": "_addr",
                  "nameLocation": "32667:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4846,
                  "src": "32659:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "32659:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4789,
                  "mutability": "mutable",
                  "name": "_audId",
                  "nameLocation": "32699:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4846,
                  "src": "32683:22:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4788,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32683:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32648:64:2"
            },
            "returnParameters": {
              "id": 4795,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32744:0:2"
            },
            "scope": 5834,
            "src": "32626:609:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4883,
              "nodeType": "Block",
              "src": "34354:238:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 4860,
                        "name": "_newDepositFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4851,
                        "src": "34369:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "id": 4861,
                        "name": "FEE_LIMIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3694,
                        "src": "34387:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "34369:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4865,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 4863,
                        "name": "_newWithdrawFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4853,
                        "src": "34400:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "id": 4864,
                        "name": "FEE_LIMIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3694,
                        "src": "34419:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "34400:28:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "34369:59:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4870,
                  "nodeType": "IfStatement",
                  "src": "34365:107:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 4867,
                        "name": "Enshroud_FeeTooLarge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3851,
                        "src": "34450:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 4868,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "34450:22:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 4869,
                    "nodeType": "RevertStatement",
                    "src": "34443:29:2"
                  }
                },
                {
                  "expression": {
                    "id": 4875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4871,
                        "name": "assetDepositFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3739,
                        "src": "34483:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 4873,
                      "indexExpression": {
                        "id": 4872,
                        "name": "_tokenAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4849,
                        "src": "34499:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "34483:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4874,
                      "name": "_newDepositFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4851,
                      "src": "34513:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "34483:44:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4876,
                  "nodeType": "ExpressionStatement",
                  "src": "34483:44:2"
                },
                {
                  "expression": {
                    "id": 4881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4877,
                        "name": "assetWithdrawFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3743,
                        "src": "34538:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 4879,
                      "indexExpression": {
                        "id": 4878,
                        "name": "_tokenAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4849,
                        "src": "34555:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "34538:28:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4880,
                      "name": "_newWithdrawFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4853,
                      "src": "34569:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "34538:46:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4882,
                  "nodeType": "ExpressionStatement",
                  "src": "34538:46:2"
                }
              ]
            },
            "documentation": {
              "id": 4847,
              "nodeType": "StructuredDocumentation",
              "src": "33764:430:2",
              "text": "@param _tokenAddr: address of token whose fees are being updated. Leave as zero address for global changes (native token always has global fees)\n @param _newDepositFee: new per-asset percentage fee from user upon successful shielding, in 18 decimals. Must be < 5e17.\n @param _newWithdrawFee: new per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals. Must be < 5e17."
            },
            "functionSelector": "f898c94b",
            "id": 4884,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 4856,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "34342:3:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "34346:6:2",
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "34342:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4858,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4855,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "34332:9:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3843,
                  "src": "34332:9:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "34332:21:2"
              }
            ],
            "name": "updateFees",
            "nameLocation": "34209:10:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4849,
                  "mutability": "mutable",
                  "name": "_tokenAddr",
                  "nameLocation": "34238:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4884,
                  "src": "34230:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4848,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34230:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4851,
                  "mutability": "mutable",
                  "name": "_newDepositFee",
                  "nameLocation": "34267:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4884,
                  "src": "34259:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4850,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34259:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4853,
                  "mutability": "mutable",
                  "name": "_newWithdrawFee",
                  "nameLocation": "34300:15:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4884,
                  "src": "34292:23:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34292:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34219:103:2"
            },
            "returnParameters": {
              "id": 4859,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34354:0:2"
            },
            "scope": 5834,
            "src": "34200:392:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4907,
              "nodeType": "Block",
              "src": "35041:91:2",
              "statements": [
                {
                  "expression": {
                    "id": 4900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4896,
                        "name": "adminStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3728,
                        "src": "35052:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 4898,
                      "indexExpression": {
                        "id": 4897,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4887,
                        "src": "35064:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "35052:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4899,
                      "name": "_status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4889,
                      "src": "35073:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "35052:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4901,
                  "nodeType": "ExpressionStatement",
                  "src": "35052:28:2"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 4903,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4887,
                        "src": "35109:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4904,
                        "name": "_status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4889,
                        "src": "35116:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4902,
                      "name": "AdminUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3775,
                      "src": "35096:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool)"
                      }
                    },
                    "id": 4905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35096:28:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4906,
                  "nodeType": "EmitStatement",
                  "src": "35091:33:2"
                }
              ]
            },
            "documentation": {
              "id": 4885,
              "nodeType": "StructuredDocumentation",
              "src": "34600:329:2",
              "text": "@notice allows an admin to designate another admin or revoke an active admin; can be used in event of malicious admin/exploit, to remove initial admins, add DAO voting addresses, etc.\n @param _addr: address whose admin status is being updated\n @param _status: true for admin status grant, false for revocation"
            },
            "functionSelector": "670a6fd9",
            "id": 4908,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 4892,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "35029:3:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "35033:6:2",
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "35029:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4894,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4891,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "35019:9:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3843,
                  "src": "35019:9:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "35019:21:2"
              }
            ],
            "name": "updateAdmin",
            "nameLocation": "34944:11:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4887,
                  "mutability": "mutable",
                  "name": "_addr",
                  "nameLocation": "34974:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4908,
                  "src": "34966:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4886,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34966:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4889,
                  "mutability": "mutable",
                  "name": "_status",
                  "nameLocation": "34995:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4908,
                  "src": "34990:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4888,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "34990:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34955:54:2"
            },
            "returnParameters": {
              "id": 4895,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35041:0:2"
            },
            "scope": 5834,
            "src": "34935:197:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4961,
              "nodeType": "Block",
              "src": "35747:606:2",
              "statements": [
                {
                  "assignments": [
                    4919
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4919,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "35765:7:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 4961,
                      "src": "35758:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 4918,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "35758:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4931,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 4926,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "35797:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "35801:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "35797:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "35789:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 4924,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "35789:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "35789:19:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 4923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35782:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 4922,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "35782:6:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35782:27:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "35775:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 4920,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "35775:6:2",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35775:35:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35758:52:2"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 4933,
                        "name": "_newTreasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4911,
                        "src": "35844:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 4934,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4919,
                        "src": "35858:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 4935,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3674,
                          "src": "35867:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                            "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                          }
                        },
                        "id": 4936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "35881:8:2",
                        "memberName": "Treasury",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3672,
                        "src": "35867:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "35891:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4932,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5821,
                      "src": "35825:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$3674_$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum EnshroudProtocol.ApprovalTypes,string memory) returns (bool)"
                      }
                    },
                    "id": 4938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35825:69:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4960,
                  "nodeType": "IfStatement",
                  "src": "35821:525:2",
                  "trueBody": {
                    "id": 4959,
                    "nodeType": "Block",
                    "src": "35896:450:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 4943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4939,
                              "name": "adminStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3728,
                              "src": "36024:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4941,
                            "indexExpression": {
                              "id": 4940,
                              "name": "_newTreasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4911,
                              "src": "36036:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36024:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 4942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36052:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "36024:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4944,
                        "nodeType": "ExpressionStatement",
                        "src": "36024:32:2"
                      },
                      {
                        "expression": {
                          "id": 4948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "36162:28:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4945,
                              "name": "adminStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3728,
                              "src": "36169:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4947,
                            "indexExpression": {
                              "id": 4946,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3705,
                              "src": "36181:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36169:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4949,
                        "nodeType": "ExpressionStatement",
                        "src": "36162:28:2"
                      },
                      {
                        "expression": {
                          "id": 4952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4950,
                            "name": "treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3705,
                            "src": "36205:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4951,
                            "name": "_newTreasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4911,
                            "src": "36216:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "36205:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 4953,
                        "nodeType": "ExpressionStatement",
                        "src": "36205:23:2"
                      },
                      {
                        "expression": {
                          "id": 4957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "36298:36:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4954,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3724,
                              "src": "36305:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                              }
                            },
                            "id": 4956,
                            "indexExpression": {
                              "id": 4955,
                              "name": "_newTreasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4911,
                              "src": "36321:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36305:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$3685_storage",
                              "typeString": "struct EnshroudProtocol.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4958,
                        "nodeType": "ExpressionStatement",
                        "src": "36298:36:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4909,
              "nodeType": "StructuredDocumentation",
              "src": "35595:45:2",
              "text": "@param _newTreasury: new treasury address"
            },
            "functionSelector": "7f51bb1f",
            "id": 4962,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 4914,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "35735:3:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "35739:6:2",
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "35735:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4916,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4913,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "35725:9:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3843,
                  "src": "35725:9:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "35725:21:2"
              }
            ],
            "name": "updateTreasury",
            "nameLocation": "35655:14:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4911,
                  "mutability": "mutable",
                  "name": "_newTreasury",
                  "nameLocation": "35696:12:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4962,
                  "src": "35680:28:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35680:15:2",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35669:46:2"
            },
            "returnParameters": {
              "id": 4917,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35747:0:2"
            },
            "scope": 5834,
            "src": "35646:707:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5015,
              "nodeType": "Block",
              "src": "36949:600:2",
              "statements": [
                {
                  "assignments": [
                    4973
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4973,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "36967:7:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5015,
                      "src": "36960:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 4972,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "36960:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4985,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 4980,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "36999:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "37003:6:2",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "36999:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4979,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "36991:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 4978,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "36991:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "36991:19:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 4977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "36984:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 4976,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "36984:6:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36984:27:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4975,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "36977:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 4974,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "36977:6:2",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36977:35:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "36960:52:2"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 4987,
                        "name": "_newDaoPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4965,
                        "src": "37046:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 4988,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4973,
                        "src": "37059:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 4989,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3674,
                          "src": "37068:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                            "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                          }
                        },
                        "id": 4990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "37082:7:2",
                        "memberName": "DaoPool",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3673,
                        "src": "37068:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "37091:2:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                          "typeString": "enum EnshroudProtocol.ApprovalTypes"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4986,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5821,
                      "src": "37027:18:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$3674_$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum EnshroudProtocol.ApprovalTypes,string memory) returns (bool)"
                      }
                    },
                    "id": 4992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37027:67:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5014,
                  "nodeType": "IfStatement",
                  "src": "37023:519:2",
                  "trueBody": {
                    "id": 5013,
                    "nodeType": "Block",
                    "src": "37099:443:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 4997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4993,
                              "name": "adminStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3728,
                              "src": "37226:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4995,
                            "indexExpression": {
                              "id": 4994,
                              "name": "_newDaoPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4965,
                              "src": "37238:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "37226:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 4996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37253:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "37226:31:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4998,
                        "nodeType": "ExpressionStatement",
                        "src": "37226:31:2"
                      },
                      {
                        "expression": {
                          "id": 5002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "37363:27:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 4999,
                              "name": "adminStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3728,
                              "src": "37370:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 5001,
                            "indexExpression": {
                              "id": 5000,
                              "name": "daoPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3703,
                              "src": "37382:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "37370:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5003,
                        "nodeType": "ExpressionStatement",
                        "src": "37363:27:2"
                      },
                      {
                        "expression": {
                          "id": 5006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5004,
                            "name": "daoPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3703,
                            "src": "37405:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5005,
                            "name": "_newDaoPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4965,
                            "src": "37415:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "37405:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 5007,
                        "nodeType": "ExpressionStatement",
                        "src": "37405:21:2"
                      },
                      {
                        "expression": {
                          "id": 5011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "37495:35:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 5008,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3724,
                              "src": "37502:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                              }
                            },
                            "id": 5010,
                            "indexExpression": {
                              "id": 5009,
                              "name": "_newDaoPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4965,
                              "src": "37518:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "37502:28:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$3685_storage",
                              "typeString": "struct EnshroudProtocol.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5012,
                        "nodeType": "ExpressionStatement",
                        "src": "37495:35:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4963,
              "nodeType": "StructuredDocumentation",
              "src": "36800:44:2",
              "text": "@param _newDaoPool: new DAO Pool address"
            },
            "functionSelector": "6d127c68",
            "id": 5016,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 4968,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "36937:3:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4969,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "36941:6:2",
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "36937:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4970,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4967,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "36927:9:2"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3843,
                  "src": "36927:9:2"
                },
                "nodeType": "ModifierInvocation",
                "src": "36927:21:2"
              }
            ],
            "name": "updateDaoPool",
            "nameLocation": "36859:13:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4965,
                  "mutability": "mutable",
                  "name": "_newDaoPool",
                  "nameLocation": "36899:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5016,
                  "src": "36883:27:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4964,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "36883:15:2",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36872:45:2"
            },
            "returnParameters": {
              "id": 4971,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36949:0:2"
            },
            "scope": 5834,
            "src": "36850:699:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3454
            ],
            "body": {
              "id": 5032,
              "nodeType": "Block",
              "src": "37804:59:2",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5028,
                        "name": "baseURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3707,
                        "src": "37836:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "id": 5029,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5019,
                        "src": "37845:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "expression": {
                        "id": 5026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "37822:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        },
                        "typeName": {
                          "id": 5025,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37822:6:2",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 5027,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "37829:6:2",
                      "memberName": "concat",
                      "nodeType": "MemberAccess",
                      "src": "37822:13:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                        "typeString": "function () pure returns (string memory)"
                      }
                    },
                    "id": 5030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37822:33:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 5024,
                  "id": 5031,
                  "nodeType": "Return",
                  "src": "37815:40:2"
                }
              ]
            },
            "documentation": {
              "id": 5017,
              "nodeType": "StructuredDocumentation",
              "src": "37557:140:2",
              "text": "@param _metadata: eNFT token metadata\n @return uri for the supplied '_metadata'; see notes on baseURI in the constructor natSpec"
            },
            "functionSelector": "0de72b7e",
            "id": 5033,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "uri",
            "nameLocation": "37712:3:2",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5021,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "37771:8:2"
            },
            "parameters": {
              "id": 5020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5019,
                  "mutability": "mutable",
                  "name": "_metadata",
                  "nameLocation": "37742:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "37726:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37726:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37715:43:2"
            },
            "returnParameters": {
              "id": 5024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5023,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "37789:13:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5022,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37789:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37788:15:2"
            },
            "scope": 5834,
            "src": "37703:160:2",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5175,
              "nodeType": "Block",
              "src": "38514:2298:2",
              "statements": [
                {
                  "assignments": [
                    5046
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5046,
                      "mutability": "mutable",
                      "name": "_netAmount",
                      "nameLocation": "38527:10:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5175,
                      "src": "38519:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5045,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "38519:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5047,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "38519:18:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 5051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 5048,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "38548:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 5049,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "38552:6:2",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "38548:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "id": 5050,
                      "name": "_depositor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5036,
                      "src": "38562:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "38548:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 5103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 5100,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "39189:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "39193:6:2",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "39189:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "id": 5102,
                        "name": "daoPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3703,
                        "src": "39203:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "39189:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 5112,
                      "nodeType": "Block",
                      "src": "39448:103:2",
                      "statements": [
                        {
                          "documentation": "@dev third-party deposits are not otherwise permitted",
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5109,
                              "name": "Enshroud_OnlyDAOPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3873,
                              "src": "39523:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 5110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "39523:22:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 5111,
                          "nodeType": "RevertStatement",
                          "src": "39516:29:2"
                        }
                      ]
                    },
                    "id": 5113,
                    "nodeType": "IfStatement",
                    "src": "39185:366:2",
                    "trueBody": {
                      "id": 5108,
                      "nodeType": "Block",
                      "src": "39212:230:2",
                      "statements": [
                        {
                          "documentation": "@dev occurs when called via DAOPool.claimTokenYieldAsENFTs()\n in this case DAOPool has already safeTransfer'd the tokens to this contract and accounted for any fee-on-transfer issues",
                          "expression": {
                            "id": 5106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 5104,
                              "name": "_netAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5046,
                              "src": "39416:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 5105,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5040,
                              "src": "39429:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "39416:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5107,
                          "nodeType": "ExpressionStatement",
                          "src": "39416:20:2"
                        }
                      ]
                    }
                  },
                  "id": 5114,
                  "nodeType": "IfStatement",
                  "src": "38544:1007:2",
                  "trueBody": {
                    "id": 5099,
                    "nodeType": "Block",
                    "src": "38574:605:2",
                    "statements": [
                      {
                        "assignments": [
                          5053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5053,
                            "mutability": "mutable",
                            "name": "_ourBalanceBefore",
                            "nameLocation": "38665:17:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 5099,
                            "src": "38657:25:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5052,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "38657:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5063,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5060,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "38749:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                ],
                                "id": 5059,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "38741:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5058,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "38741:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38741:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5055,
                                  "name": "_tokenContract",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5038,
                                  "src": "38715:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5054,
                                "name": "IERC20Permit_EnshroudProtocol",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3382,
                                "src": "38685:29:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Permit_EnshroudProtocol_$3382_$",
                                  "typeString": "type(contract IERC20Permit_EnshroudProtocol)"
                                }
                              },
                              "id": 5056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38685:45:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Permit_EnshroudProtocol_$3382",
                                "typeString": "contract IERC20Permit_EnshroudProtocol"
                              }
                            },
                            "id": 5057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "38731:9:2",
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3381,
                            "src": "38685:55:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38685:70:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "38657:98:2"
                      },
                      {
                        "documentation": "@dev safeTransferFrom will revert on failure (for example if lacking proper permit or approve() from '_depositor')",
                        "expression": {
                          "arguments": [
                            {
                              "id": 5067,
                              "name": "_depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5036,
                              "src": "38928:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5070,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "38948:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                ],
                                "id": 5069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "38940:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5068,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "38940:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5071,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38940:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5072,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5040,
                              "src": "38955:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5064,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5038,
                              "src": "38896:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "38911:16:2",
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7893,
                            "src": "38896:31:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_address_$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 5073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38896:67:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5074,
                        "nodeType": "ExpressionStatement",
                        "src": "38896:67:2"
                      },
                      {
                        "assignments": [
                          5076
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5076,
                            "mutability": "mutable",
                            "name": "_ourBalanceAfter",
                            "nameLocation": "38977:16:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 5099,
                            "src": "38969:24:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5075,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "38969:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5086,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5083,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "39060:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EnshroudProtocol_$5834",
                                    "typeString": "contract EnshroudProtocol"
                                  }
                                ],
                                "id": 5082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "39052:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5081,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "39052:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "39052:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5078,
                                  "name": "_tokenContract",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5038,
                                  "src": "39026:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5077,
                                "name": "IERC20Permit_EnshroudProtocol",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3382,
                                "src": "38996:29:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Permit_EnshroudProtocol_$3382_$",
                                  "typeString": "type(contract IERC20Permit_EnshroudProtocol)"
                                }
                              },
                              "id": 5079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38996:45:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Permit_EnshroudProtocol_$3382",
                                "typeString": "contract IERC20Permit_EnshroudProtocol"
                              }
                            },
                            "id": 5080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "39042:9:2",
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3381,
                            "src": "38996:55:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38996:70:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "38969:97:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5088,
                                "name": "_ourBalanceAfter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5076,
                                "src": "39080:16:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 5089,
                                "name": "_ourBalanceBefore",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5053,
                                "src": "39100:17:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "39080:37:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5087,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "39072:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 5091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39072:46:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5092,
                        "nodeType": "ExpressionStatement",
                        "src": "39072:46:2"
                      },
                      {
                        "expression": {
                          "id": 5097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5093,
                            "name": "_netAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5046,
                            "src": "39124:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5094,
                              "name": "_ourBalanceAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5076,
                              "src": "39137:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 5095,
                              "name": "_ourBalanceBefore",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5053,
                              "src": "39156:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "39137:36:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "39124:49:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5098,
                        "nodeType": "ExpressionStatement",
                        "src": "39124:49:2"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    5116
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5116,
                      "mutability": "mutable",
                      "name": "_tokenDepositFeeAmount",
                      "nameLocation": "39610:22:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5175,
                      "src": "39602:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5115,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "39602:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5121,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5118,
                        "name": "_netAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5046,
                        "src": "39647:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5119,
                        "name": "_fee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5042,
                        "src": "39659:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5117,
                      "name": "_mulWadDown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "39635:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 5120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39635:29:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "39602:62:2"
                },
                {
                  "assignments": [
                    5123
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5123,
                      "mutability": "mutable",
                      "name": "_netDeposit",
                      "nameLocation": "39683:11:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5175,
                      "src": "39675:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5122,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "39675:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5127,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5124,
                      "name": "_netAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5046,
                      "src": "39697:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 5125,
                      "name": "_tokenDepositFeeAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5116,
                      "src": "39710:22:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "39697:35:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "39675:57:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5128,
                      "name": "_netDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5123,
                      "src": "39747:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 5129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "39762:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "39747:16:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5134,
                  "nodeType": "IfStatement",
                  "src": "39743:52:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 5131,
                        "name": "Enshroud_ZeroMsgValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3871,
                        "src": "39772:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 5132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "39772:23:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 5133,
                    "nodeType": "RevertStatement",
                    "src": "39765:30:2"
                  }
                },
                {
                  "assignments": [
                    5136
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5136,
                      "mutability": "mutable",
                      "name": "_treasuryFeeAmount",
                      "nameLocation": "39940:18:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5175,
                      "src": "39932:26:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5135,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "39932:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5141,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5138,
                        "name": "_tokenDepositFeeAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5116,
                        "src": "39987:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5139,
                        "name": "treasuryFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3713,
                        "src": "40024:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5137,
                      "name": "_mulWadDown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "39961:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 5140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39961:85:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "39932:114:2"
                },
                {
                  "id": 5174,
                  "nodeType": "UncheckedBlock",
                  "src": "40059:746:2",
                  "statements": [
                    {
                      "expression": {
                        "id": 5148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 5142,
                              "name": "assetBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3735,
                              "src": "40157:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 5145,
                            "indexExpression": {
                              "id": 5143,
                              "name": "_depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5036,
                              "src": "40171:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "40157:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5146,
                          "indexExpression": {
                            "id": 5144,
                            "name": "_tokenContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5038,
                            "src": "40183:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "40157:41:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "id": 5147,
                          "name": "_netDeposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5123,
                          "src": "40202:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "40157:56:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5149,
                      "nodeType": "ExpressionStatement",
                      "src": "40157:56:2"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5153,
                            "name": "treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3705,
                            "src": "40354:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "id": 5154,
                            "name": "_treasuryFeeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5136,
                            "src": "40364:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5150,
                            "name": "_tokenContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5038,
                            "src": "40326:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "40341:12:2",
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7879,
                          "src": "40326:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_address_$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 5155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40326:57:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5156,
                      "nodeType": "ExpressionStatement",
                      "src": "40326:57:2"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 5160,
                            "name": "daoPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3703,
                            "src": "40536:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5161,
                              "name": "_tokenDepositFeeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5116,
                              "src": "40562:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 5162,
                              "name": "_treasuryFeeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5136,
                              "src": "40587:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "40562:43:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5157,
                            "name": "_tokenContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5038,
                            "src": "40490:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "40505:12:2",
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7879,
                          "src": "40490:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_address_$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 5164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40490:130:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5165,
                      "nodeType": "ExpressionStatement",
                      "src": "40490:130:2"
                    },
                    {
                      "eventCall": {
                        "arguments": [
                          {
                            "id": 5167,
                            "name": "_depositor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5036,
                            "src": "40673:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5168,
                            "name": "_tokenContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5038,
                            "src": "40702:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 5169,
                            "name": "_netDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5123,
                            "src": "40735:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 5170,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "40765:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "40771:7:2",
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "40765:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5166,
                          "name": "DepositERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3791,
                          "src": "40642:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256)"
                          }
                        },
                        "id": 5172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40642:151:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5173,
                      "nodeType": "EmitStatement",
                      "src": "40637:156:2"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 5034,
              "nodeType": "StructuredDocumentation",
              "src": "37871:486:2",
              "text": "@notice internal function which causes all necessary token and fee transfers upon valid 'depositTokens()' or 'depositTokensWithPermit()' call\n @param _depositor: depositing address (msg.sender unless called by daoPool)\n @param _tokenContract: token contract address, ERC20 compliance (including permit, if applicable) checks completed in preceding function call\n @param _amount: amount of tokens deposited\n @param _fee: deposit fee for _tokenContract"
            },
            "id": 5176,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_depositTokens",
            "nameLocation": "38372:14:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5043,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5036,
                  "mutability": "mutable",
                  "name": "_depositor",
                  "nameLocation": "38405:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5176,
                  "src": "38397:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5035,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "38397:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5038,
                  "mutability": "mutable",
                  "name": "_tokenContract",
                  "nameLocation": "38434:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5176,
                  "src": "38426:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5037,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "38426:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5040,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "38467:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5176,
                  "src": "38459:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5039,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "38459:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5042,
                  "mutability": "mutable",
                  "name": "_fee",
                  "nameLocation": "38493:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5176,
                  "src": "38485:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5041,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "38485:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38386:118:2"
            },
            "returnParameters": {
              "id": 5044,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38514:0:2"
            },
            "scope": 5834,
            "src": "38363:2449:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5322,
              "nodeType": "Block",
              "src": "41758:1479:2",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 5204,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5188,
                            "name": "_mints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5182,
                            "src": "41787:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 5189,
                                "name": "_enftInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5180,
                                "src": "41797:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                }
                              },
                              "id": 5190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "41807:9:2",
                              "memberName": "outputIds",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3651,
                              "src": "41797:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 5191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "41817:6:2",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "41797:26:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "41787:36:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5193,
                            "name": "_mints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5182,
                            "src": "41840:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 5194,
                                "name": "_enftInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5180,
                                "src": "41850:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                }
                              },
                              "id": 5195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "41860:13:2",
                              "memberName": "detailsHashes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3645,
                              "src": "41850:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                "typeString": "bytes32[] calldata"
                              }
                            },
                            "id": 5196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "41874:6:2",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "41850:30:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "41840:40:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "41787:93:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5203,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5199,
                          "name": "_mints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5182,
                          "src": "41897:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "expression": {
                            "expression": {
                              "id": 5200,
                              "name": "_enftInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5180,
                              "src": "41907:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                              }
                            },
                            "id": 5201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "41917:10:2",
                            "memberName": "recipients",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3642,
                            "src": "41907:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 5202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "41928:6:2",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "41907:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "41897:37:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "41787:147:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 5205,
                        "name": "_mints",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5182,
                        "src": "41951:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "expression": {
                          "expression": {
                            "id": 5206,
                            "name": "_enftInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5180,
                            "src": "41961:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                              "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                            }
                          },
                          "id": 5207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "41971:8:2",
                          "memberName": "metadata",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3654,
                          "src": "41961:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                            "typeString": "string calldata[] calldata"
                          }
                        },
                        "id": 5208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "41980:6:2",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "41961:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "41951:35:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "41787:199:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5214,
                  "nodeType": "IfStatement",
                  "src": "41769:252:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 5211,
                        "name": "LengthMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3439,
                        "src": "42005:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 5212,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "42005:16:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 5213,
                    "nodeType": "RevertStatement",
                    "src": "41998:23:2"
                  }
                },
                {
                  "body": {
                    "id": 5320,
                    "nodeType": "Block",
                    "src": "42123:1107:2",
                    "statements": [
                      {
                        "assignments": [
                          5223
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5223,
                            "mutability": "mutable",
                            "name": "_id",
                            "nameLocation": "42146:3:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 5320,
                            "src": "42138:11:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5222,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "42138:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5228,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 5224,
                              "name": "_enftInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5180,
                              "src": "42152:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                              }
                            },
                            "id": 5225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "42162:9:2",
                            "memberName": "outputIds",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3651,
                            "src": "42152:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 5227,
                          "indexExpression": {
                            "id": 5226,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5216,
                            "src": "42172:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "42152:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42138:36:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 5231,
                                    "name": "idToAuditorGreylist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3763,
                                    "src": "42199:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                                      "typeString": "mapping(uint256 => string storage ref)"
                                    }
                                  },
                                  "id": 5233,
                                  "indexExpression": {
                                    "id": 5232,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5223,
                                    "src": "42219:3:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "42199:24:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 5230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "42193:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 5229,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "42193:5:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "42193:31:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes storage pointer"
                              }
                            },
                            "id": 5235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "42225:6:2",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "42193:38:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42235:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "42193:43:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5242,
                        "nodeType": "IfStatement",
                        "src": "42189:97:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [
                              {
                                "id": 5239,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5223,
                                "src": "42282:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5238,
                              "name": "Enshroud_Greylisted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3855,
                              "src": "42262:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$",
                                "typeString": "function (uint256) pure returns (error)"
                              }
                            },
                            "id": 5240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "42262:24:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 5241,
                          "nodeType": "RevertStatement",
                          "src": "42255:31:2"
                        }
                      },
                      {
                        "condition": {
                          "baseExpression": {
                            "id": 5243,
                            "name": "nftIdUsed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3753,
                            "src": "42411:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                              "typeString": "mapping(uint256 => bool)"
                            }
                          },
                          "id": 5245,
                          "indexExpression": {
                            "id": 5244,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5223,
                            "src": "42421:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "42411:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5249,
                        "nodeType": "IfStatement",
                        "src": "42407:47:2",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5246,
                              "name": "Enshroud_InvalidID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3859,
                              "src": "42434:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 5247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "42434:20:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 5248,
                          "nodeType": "RevertStatement",
                          "src": "42427:27:2"
                        }
                      },
                      {
                        "expression": {
                          "id": 5254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5250,
                              "name": "nftIdUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3753,
                              "src": "42509:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                                "typeString": "mapping(uint256 => bool)"
                              }
                            },
                            "id": 5252,
                            "indexExpression": {
                              "id": 5251,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5223,
                              "src": "42519:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "42509:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 5253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42526:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "42509:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5255,
                        "nodeType": "ExpressionStatement",
                        "src": "42509:21:2"
                      },
                      {
                        "expression": {
                          "id": 5263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5256,
                              "name": "detailsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "42545:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                "typeString": "mapping(uint256 => bytes32)"
                              }
                            },
                            "id": 5258,
                            "indexExpression": {
                              "id": 5257,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5223,
                              "src": "42557:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "42545:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 5259,
                                "name": "_enftInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5180,
                                "src": "42564:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                }
                              },
                              "id": 5260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "42574:13:2",
                              "memberName": "detailsHashes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3645,
                              "src": "42564:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                "typeString": "bytes32[] calldata"
                              }
                            },
                            "id": 5262,
                            "indexExpression": {
                              "id": 5261,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5216,
                              "src": "42588:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "42564:26:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "42545:45:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5264,
                        "nodeType": "ExpressionStatement",
                        "src": "42545:45:2"
                      },
                      {
                        "id": 5274,
                        "nodeType": "UncheckedBlock",
                        "src": "42605:100:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 5272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 5265,
                                  "name": "enftUnlockTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3768,
                                  "src": "42634:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 5267,
                                "indexExpression": {
                                  "id": 5266,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5223,
                                  "src": "42649:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "42634:19:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 5268,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "42656:5:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 5269,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "42662:6:2",
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "src": "42656:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 5270,
                                  "name": "confirmationBlocks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3701,
                                  "src": "42671:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "42656:33:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "42634:55:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5273,
                            "nodeType": "ExpressionStatement",
                            "src": "42634:55:2"
                          }
                        ]
                      },
                      {
                        "assignments": [
                          5276
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5276,
                            "mutability": "mutable",
                            "name": "_recipient",
                            "nameLocation": "42729:10:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 5320,
                            "src": "42721:18:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5275,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "42721:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5281,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 5277,
                              "name": "_enftInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5180,
                              "src": "42742:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                              }
                            },
                            "id": 5278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "42752:10:2",
                            "memberName": "recipients",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3642,
                            "src": "42742:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 5280,
                          "indexExpression": {
                            "id": 5279,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5216,
                            "src": "42763:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "42742:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42721:44:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Flag_$3638",
                            "typeString": "enum EnshroudProtocol.Flag"
                          },
                          "id": 5285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5282,
                            "name": "_flag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5185,
                            "src": "42784:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Flag_$3638",
                              "typeString": "enum EnshroudProtocol.Flag"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 5283,
                              "name": "Flag",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3638,
                              "src": "42793:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                                "typeString": "type(enum EnshroudProtocol.Flag)"
                              }
                            },
                            "id": 5284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "42798:8:2",
                            "memberName": "Withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3637,
                            "src": "42793:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Flag_$3638",
                              "typeString": "enum EnshroudProtocol.Flag"
                            }
                          },
                          "src": "42784:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5292,
                        "nodeType": "IfStatement",
                        "src": "42780:161:2",
                        "trueBody": {
                          "id": 5291,
                          "nodeType": "Block",
                          "src": "42808:133:2",
                          "statements": [
                            {
                              "expression": {
                                "id": 5289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5286,
                                  "name": "_recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5276,
                                  "src": "42902:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 5287,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "42915:3:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "42919:6:2",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "42915:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "42902:23:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5290,
                              "nodeType": "ExpressionStatement",
                              "src": "42902:23:2"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5294,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5276,
                              "src": "43007:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5295,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5223,
                              "src": "43019:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 5296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "43024:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 5299,
                                      "name": "_enftInfo",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5180,
                                      "src": "43033:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                        "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                      }
                                    },
                                    "id": 5300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "43043:8:2",
                                    "memberName": "metadata",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3654,
                                    "src": "43033:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "string calldata[] calldata"
                                    }
                                  },
                                  "id": 5302,
                                  "indexExpression": {
                                    "id": 5301,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5216,
                                    "src": "43052:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "43033:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 5298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "43027:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 5297,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "43027:5:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43027:28:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 5293,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3547,
                            "src": "43001:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 5304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43001:55:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5305,
                        "nodeType": "ExpressionStatement",
                        "src": "43001:55:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 5308,
                                      "name": "_enftInfo",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5180,
                                      "src": "43086:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                        "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                      }
                                    },
                                    "id": 5309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "43096:8:2",
                                    "memberName": "metadata",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3654,
                                    "src": "43086:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "string calldata[] calldata"
                                    }
                                  },
                                  "id": 5311,
                                  "indexExpression": {
                                    "id": 5310,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5216,
                                    "src": "43105:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "43086:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                ],
                                "id": 5307,
                                "name": "uri",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5033
                                ],
                                "referencedDeclaration": 5033,
                                "src": "43082:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_string_calldata_ptr_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (string calldata) view returns (string memory)"
                                }
                              },
                              "id": 5312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43082:26:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 5313,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5223,
                              "src": "43110:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5306,
                            "name": "URI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3432,
                            "src": "43078:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (string memory,uint256)"
                            }
                          },
                          "id": 5314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43078:36:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5315,
                        "nodeType": "EmitStatement",
                        "src": "43073:41:2"
                      },
                      {
                        "id": 5319,
                        "nodeType": "UncheckedBlock",
                        "src": "43129:90:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 5317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "43158:3:2",
                              "subExpression": {
                                "id": 5316,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5216,
                                "src": "43160:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5318,
                            "nodeType": "ExpressionStatement",
                            "src": "43158:3:2"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5219,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5216,
                      "src": "42109:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 5220,
                      "name": "_mints",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5182,
                      "src": "42113:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "42109:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5321,
                  "initializationExpression": {
                    "assignments": [
                      5216
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5216,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "42102:1:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 5321,
                        "src": "42094:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5215,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "42094:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 5218,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 5217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "42106:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "42094:13:2"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "42089:1141:2"
                }
              ]
            },
            "documentation": {
              "id": 5177,
              "nodeType": "StructuredDocumentation",
              "src": "41302:331:2",
              "text": "@param _enftInfo: OpsInfo struct containing all of the necessary Operations Block information\n @param _mints: number of eNFTs to be minted for use in for loop (saves a storage read, and array lengths are checked)\n @param _flag: Flag enum corresponding to MintFromDeposit, Spend, or Withdraw context (0, 1, or 2)"
            },
            "id": 5323,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mintENFTs",
            "nameLocation": "41648:10:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5180,
                  "mutability": "mutable",
                  "name": "_enftInfo",
                  "nameLocation": "41686:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5323,
                  "src": "41669:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.OpsInfo"
                  },
                  "typeName": {
                    "id": 5179,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5178,
                      "name": "OpsInfo",
                      "nameLocations": [
                        "41669:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3659,
                      "src": "41669:7:2"
                    },
                    "referencedDeclaration": 3659,
                    "src": "41669:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_OpsInfo_$3659_storage_ptr",
                      "typeString": "struct EnshroudProtocol.OpsInfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5182,
                  "mutability": "mutable",
                  "name": "_mints",
                  "nameLocation": "41714:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5323,
                  "src": "41706:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5181,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "41706:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5185,
                  "mutability": "mutable",
                  "name": "_flag",
                  "nameLocation": "41736:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5323,
                  "src": "41731:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Flag_$3638",
                    "typeString": "enum EnshroudProtocol.Flag"
                  },
                  "typeName": {
                    "id": 5184,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5183,
                      "name": "Flag",
                      "nameLocations": [
                        "41731:4:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3638,
                      "src": "41731:4:2"
                    },
                    "referencedDeclaration": 3638,
                    "src": "41731:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Flag_$3638",
                      "typeString": "enum EnshroudProtocol.Flag"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41658:90:2"
            },
            "returnParameters": {
              "id": 5187,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41758:0:2"
            },
            "scope": 5834,
            "src": "41639:1598:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5468,
              "nodeType": "Block",
              "src": "43858:3018:2",
              "statements": [
                {
                  "assignments": [
                    5334
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5334,
                      "mutability": "mutable",
                      "name": "_daoPool",
                      "nameLocation": "43877:8:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5468,
                      "src": "43869:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5333,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "43869:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5336,
                  "initialValue": {
                    "id": 5335,
                    "name": "daoPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3703,
                    "src": "43888:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "43869:26:2"
                },
                {
                  "assignments": [
                    5338
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5338,
                      "mutability": "mutable",
                      "name": "_tokenWithdrawFeeAmount",
                      "nameLocation": "43914:23:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5468,
                      "src": "43906:31:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5337,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "43906:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5339,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "43906:31:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 5340,
                        "name": "assetWithdrawFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3743,
                        "src": "44076:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5342,
                      "indexExpression": {
                        "id": 5341,
                        "name": "_tokenContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5330,
                        "src": "44093:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "44076:32:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 5343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "44112:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "44076:37:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5367,
                    "nodeType": "Block",
                    "src": "44278:161:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 5365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5358,
                            "name": "_tokenWithdrawFeeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5338,
                            "src": "44293:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5360,
                                "name": "_amountTotal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5326,
                                "src": "44349:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 5361,
                                  "name": "assetWithdrawFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "44380:16:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 5363,
                                "indexExpression": {
                                  "id": 5362,
                                  "name": "_tokenContract",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5330,
                                  "src": "44397:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "44380:32:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5359,
                              "name": "_mulWadDown",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5833,
                              "src": "44319:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "44319:108:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "44293:134:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5366,
                        "nodeType": "ExpressionStatement",
                        "src": "44293:134:2"
                      }
                    ]
                  },
                  "id": 5368,
                  "nodeType": "IfStatement",
                  "src": "44072:367:2",
                  "trueBody": {
                    "id": 5357,
                    "nodeType": "Block",
                    "src": "44115:157:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 5355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5345,
                            "name": "_tokenWithdrawFeeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5338,
                            "src": "44130:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5347,
                                "name": "_amountTotal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5326,
                                "src": "44186:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "baseExpression": {
                                  "id": 5348,
                                  "name": "assetWithdrawFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "44217:16:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 5353,
                                "indexExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 5351,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "44242:1:2",
                                      "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": 5350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "44234:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5349,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "44234:7:2",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5352,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "44234:10:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "44217:28:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5346,
                              "name": "_mulWadDown",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5833,
                              "src": "44156:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "44156:104:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "44130:130:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5356,
                        "nodeType": "ExpressionStatement",
                        "src": "44130:130:2"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    5370
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5370,
                      "mutability": "mutable",
                      "name": "_treasuryFeeAmount",
                      "nameLocation": "44459:18:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5468,
                      "src": "44451:26:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5369,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "44451:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5375,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5372,
                        "name": "_tokenWithdrawFeeAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5338,
                        "src": "44506:23:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5373,
                        "name": "treasuryFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3713,
                        "src": "44544:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5371,
                      "name": "_mulWadDown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "44480:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 5374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44480:86:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "44451:115:2"
                },
                {
                  "assignments": [
                    5377
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5377,
                      "mutability": "mutable",
                      "name": "_netWithdrawal",
                      "nameLocation": "44587:14:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5468,
                      "src": "44579:22:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5376,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "44579:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5378,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "44579:22:2"
                },
                {
                  "id": 5385,
                  "nodeType": "UncheckedBlock",
                  "src": "44612:211:2",
                  "statements": [
                    {
                      "expression": {
                        "id": 5383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 5379,
                          "name": "_netWithdrawal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5377,
                          "src": "44756:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5380,
                            "name": "_amountTotal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5326,
                            "src": "44773:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 5381,
                            "name": "_tokenWithdrawFeeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5338,
                            "src": "44788:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "44773:38:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "44756:55:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5384,
                      "nodeType": "ExpressionStatement",
                      "src": "44756:55:2"
                    }
                  ]
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 5391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 5386,
                        "name": "_tokenContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5330,
                        "src": "44908:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 5389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44934:1:2",
                            "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": 5388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "44926:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5387,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "44926:7:2",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 5390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44926:10:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "44908:28:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 5394,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 5392,
                        "name": "_tokenContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5330,
                        "src": "44940:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "id": 5393,
                        "name": "weth",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3699,
                        "src": "44958:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "44940:22:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "44908:54:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5466,
                    "nodeType": "Block",
                    "src": "46016:853:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5437,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3705,
                              "src": "46266:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5438,
                              "name": "_treasuryFeeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5370,
                              "src": "46276:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5434,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5330,
                              "src": "46238:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "46253:12:2",
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7879,
                            "src": "46238:27:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_address_$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 5439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46238:57:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5440,
                        "nodeType": "ExpressionStatement",
                        "src": "46238:57:2"
                      },
                      {
                        "id": 5450,
                        "nodeType": "UncheckedBlock",
                        "src": "46424:189:2",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5444,
                                  "name": "_daoPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5334,
                                  "src": "46503:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 5445,
                                    "name": "_tokenWithdrawFeeAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5338,
                                    "src": "46534:23:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 5446,
                                    "name": "_treasuryFeeAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5370,
                                    "src": "46560:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "46534:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5441,
                                  "name": "_tokenContract",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5330,
                                  "src": "46453:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 5443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "46468:12:2",
                                "memberName": "safeTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7879,
                                "src": "46453:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_address_$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 5448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46453:144:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5449,
                            "nodeType": "ExpressionStatement",
                            "src": "46453:144:2"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5454,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5328,
                              "src": "46655:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5455,
                              "name": "_netWithdrawal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5377,
                              "src": "46667:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5451,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5330,
                              "src": "46627:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "46642:12:2",
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7879,
                            "src": "46627:27:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_address_$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 5456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46627:55:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5457,
                        "nodeType": "ExpressionStatement",
                        "src": "46627:55:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5459,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5328,
                              "src": "46734:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5460,
                              "name": "_tokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5330,
                              "src": "46763:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5461,
                              "name": "_netWithdrawal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5377,
                              "src": "46796:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 5462,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "46829:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "46835:7:2",
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "46829:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5458,
                            "name": "WithdrawERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3820,
                            "src": "46702:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 5464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46702:155:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5465,
                        "nodeType": "EmitStatement",
                        "src": "46697:160:2"
                      }
                    ]
                  },
                  "id": 5467,
                  "nodeType": "IfStatement",
                  "src": "44904:1965:2",
                  "trueBody": {
                    "id": 5433,
                    "nodeType": "Block",
                    "src": "44964:1046:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5399,
                              "name": "_amountTotal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5326,
                              "src": "45286:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5396,
                              "name": "iWeth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3719,
                              "src": "45271:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$3391",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 5398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "45277:8:2",
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3390,
                            "src": "45271:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 5400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45271:28:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5401,
                        "nodeType": "ExpressionStatement",
                        "src": "45271:28:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5405,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3705,
                              "src": "45498:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5406,
                              "name": "_treasuryFeeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5370,
                              "src": "45508:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5402,
                              "name": "SafeTransferLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7894,
                              "src": "45466:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_SafeTransferLib_$7894_$",
                                "typeString": "type(library SafeTransferLib)"
                              }
                            },
                            "id": 5404,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "45482:15:2",
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7855,
                            "src": "45466:31:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45466:61:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5408,
                        "nodeType": "ExpressionStatement",
                        "src": "45466:61:2"
                      },
                      {
                        "id": 5418,
                        "nodeType": "UncheckedBlock",
                        "src": "45656:193:2",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5412,
                                  "name": "_daoPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5334,
                                  "src": "45739:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5415,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 5413,
                                    "name": "_tokenWithdrawFeeAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5338,
                                    "src": "45770:23:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 5414,
                                    "name": "_treasuryFeeAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5370,
                                    "src": "45796:18:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "45770:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5409,
                                  "name": "SafeTransferLib",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7894,
                                  "src": "45685:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeTransferLib_$7894_$",
                                    "typeString": "type(library SafeTransferLib)"
                                  }
                                },
                                "id": 5411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "45701:15:2",
                                "memberName": "safeTransferETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7855,
                                "src": "45685:31:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256)"
                                }
                              },
                              "id": 5416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45685:148:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5417,
                            "nodeType": "ExpressionStatement",
                            "src": "45685:148:2"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5422,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5328,
                              "src": "45895:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5423,
                              "name": "_netWithdrawal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5377,
                              "src": "45907:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5419,
                              "name": "SafeTransferLib",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7894,
                              "src": "45863:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_SafeTransferLib_$7894_$",
                                "typeString": "type(library SafeTransferLib)"
                              }
                            },
                            "id": 5421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "45879:15:2",
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7855,
                            "src": "45863:31:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45863:59:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5425,
                        "nodeType": "ExpressionStatement",
                        "src": "45863:59:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5427,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5328,
                              "src": "45956:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5428,
                              "name": "_netWithdrawal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5377,
                              "src": "45968:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 5429,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "45984:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "45990:7:2",
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "45984:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5426,
                            "name": "WithdrawETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3828,
                            "src": "45944:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 5431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45944:54:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5432,
                        "nodeType": "EmitStatement",
                        "src": "45939:59:2"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 5324,
              "nodeType": "StructuredDocumentation",
              "src": "43245:479:2",
              "text": "@notice withdrawal functionality for redeemed eNFTs\n @dev reentrancy-protected by 'redeemENFTsAndWithdraw()'\n @param _amountTotal: total amount of tokens/asset (across all eNFTs being redeemed) requesting for withdraw in proper decimals\n @param _recipient: address which receives the withdrawn assets\n @param _tokenContract: token contract address, ERC20 compliance (including permit, if applicable) checks completed in preceding function call"
            },
            "id": 5469,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_withdraw",
            "nameLocation": "43739:9:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5326,
                  "mutability": "mutable",
                  "name": "_amountTotal",
                  "nameLocation": "43767:12:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5469,
                  "src": "43759:20:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5325,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "43759:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5328,
                  "mutability": "mutable",
                  "name": "_recipient",
                  "nameLocation": "43798:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5469,
                  "src": "43790:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5327,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43790:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5330,
                  "mutability": "mutable",
                  "name": "_tokenContract",
                  "nameLocation": "43827:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5469,
                  "src": "43819:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43819:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43748:100:2"
            },
            "returnParameters": {
              "id": 5332,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43858:0:2"
            },
            "scope": 5834,
            "src": "43730:3146:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5650,
              "nodeType": "Block",
              "src": "47447:2843:2",
              "statements": [
                {
                  "assignments": [
                    5483
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5483,
                      "mutability": "mutable",
                      "name": "_sigLen",
                      "nameLocation": "47533:7:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5650,
                      "src": "47525:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5482,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "47525:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5487,
                  "initialValue": {
                    "expression": {
                      "expression": {
                        "id": 5484,
                        "name": "_mvoInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5476,
                        "src": "47543:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                        }
                      },
                      "id": 5485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "47552:7:2",
                      "memberName": "mvoSigs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3663,
                      "src": "47543:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                        "typeString": "bytes calldata[] calldata"
                      }
                    },
                    "id": 5486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "47560:6:2",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "47543:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "47525:41:2"
                },
                {
                  "assignments": [
                    5489
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5489,
                      "mutability": "mutable",
                      "name": "_outputIdsLength",
                      "nameLocation": "47585:16:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5650,
                      "src": "47577:24:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5488,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "47577:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5493,
                  "initialValue": {
                    "expression": {
                      "expression": {
                        "id": 5490,
                        "name": "_enftInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5473,
                        "src": "47604:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      "id": 5491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "47614:9:2",
                      "memberName": "outputIds",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3651,
                      "src": "47604:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 5492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "47624:6:2",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "47604:26:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "47577:53:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5494,
                      "name": "_sigLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5483,
                      "src": "47645:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 5495,
                      "name": "requiredSigs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3709,
                      "src": "47655:12:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "47645:22:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5500,
                  "nodeType": "IfStatement",
                  "src": "47641:66:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 5497,
                        "name": "Enshroud_MVOSignaturesMissing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3861,
                        "src": "47676:29:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 5498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "47676:31:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 5499,
                    "nodeType": "RevertStatement",
                    "src": "47669:38:2"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "expression": {
                            "id": 5501,
                            "name": "_enftInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5473,
                            "src": "47736:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                              "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                            }
                          },
                          "id": 5502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "47746:8:2",
                          "memberName": "inputIds",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3648,
                          "src": "47736:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                            "typeString": "uint256[] calldata"
                          }
                        },
                        "id": 5503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "47755:6:2",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "47736:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 5504,
                        "name": "ARRAY_LIMIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3691,
                        "src": "47764:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "47736:39:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 5506,
                        "name": "_outputIdsLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5489,
                        "src": "47792:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 5507,
                        "name": "ARRAY_LIMIT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3691,
                        "src": "47811:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "47792:30:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "47736:86:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5513,
                  "nodeType": "IfStatement",
                  "src": "47718:146:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 5510,
                        "name": "Enshroud_ArrayTooLong",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3847,
                        "src": "47841:21:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 5511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "47841:23:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 5512,
                    "nodeType": "RevertStatement",
                    "src": "47834:30:2"
                  }
                },
                {
                  "assignments": [
                    5515
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5515,
                      "mutability": "mutable",
                      "name": "_argsHash",
                      "nameLocation": "47885:9:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5650,
                      "src": "47877:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5514,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "47877:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5516,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "47877:17:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_Flag_$3638",
                      "typeString": "enum EnshroudProtocol.Flag"
                    },
                    "id": 5520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5517,
                      "name": "_flag",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5479,
                      "src": "47978:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Flag_$3638",
                        "typeString": "enum EnshroudProtocol.Flag"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "id": 5518,
                        "name": "Flag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3638,
                        "src": "47987:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                          "typeString": "type(enum EnshroudProtocol.Flag)"
                        }
                      },
                      "id": 5519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "47992:15:2",
                      "memberName": "MintFromDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3635,
                      "src": "47987:20:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Flag_$3638",
                        "typeString": "enum EnshroudProtocol.Flag"
                      }
                    },
                    "src": "47978:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_enum$_Flag_$3638",
                        "typeString": "enum EnshroudProtocol.Flag"
                      },
                      "id": 5539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 5536,
                        "name": "_flag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5479,
                        "src": "48257:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "id": 5537,
                          "name": "Flag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3638,
                          "src": "48266:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                            "typeString": "type(enum EnshroudProtocol.Flag)"
                          }
                        },
                        "id": 5538,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "48271:5:2",
                        "memberName": "Spend",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3636,
                        "src": "48266:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        }
                      },
                      "src": "48257:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_enum$_Flag_$3638",
                          "typeString": "enum EnshroudProtocol.Flag"
                        },
                        "id": 5558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5555,
                          "name": "_flag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5479,
                          "src": "48528:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Flag_$3638",
                            "typeString": "enum EnshroudProtocol.Flag"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 5556,
                            "name": "Flag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3638,
                            "src": "48537:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Flag_$3638_$",
                              "typeString": "type(enum EnshroudProtocol.Flag)"
                            }
                          },
                          "id": 5557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48542:8:2",
                          "memberName": "Withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3637,
                          "src": "48537:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Flag_$3638",
                            "typeString": "enum EnshroudProtocol.Flag"
                          }
                        },
                        "src": "48528:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5601,
                      "nodeType": "IfStatement",
                      "src": "48524:685:2",
                      "trueBody": {
                        "id": 5600,
                        "nodeType": "Block",
                        "src": "48552:657:2",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5559,
                                "name": "_outputIdsLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5489,
                                "src": "48571:16:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "48590:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "48571:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 5565,
                            "nodeType": "IfStatement",
                            "src": "48567:56:2",
                            "trueBody": {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5562,
                                  "name": "Enshroud_ArrayTooLong",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3847,
                                  "src": "48600:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 5563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "48600:23:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 5564,
                              "nodeType": "RevertStatement",
                              "src": "48593:30:2"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5566,
                                "name": "_outputIdsLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5489,
                                "src": "48642:16:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "48662:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "48642:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 5598,
                              "nodeType": "Block",
                              "src": "49052:146:2",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 5596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 5586,
                                      "name": "_argsHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5515,
                                      "src": "49071:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 5590,
                                                "name": "_enftInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5473,
                                                "src": "49126:9:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                                }
                                              },
                                              "id": 5591,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "49136:8:2",
                                              "memberName": "inputIds",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3648,
                                              "src": "49126:18:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                "typeString": "uint256[] calldata"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5592,
                                                "name": "_enftInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5473,
                                                "src": "49146:9:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                                }
                                              },
                                              "id": 5593,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "49156:6:2",
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3656,
                                              "src": "49146:16:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                "typeString": "uint256[] calldata"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 5588,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "49115:3:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 5589,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "49119:6:2",
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "src": "49115:10:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 5594,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "49115:48:2",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5587,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "49083:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 5595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "49083:99:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "49071:111:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "id": 5597,
                                  "nodeType": "ExpressionStatement",
                                  "src": "49071:111:2"
                                }
                              ]
                            },
                            "id": 5599,
                            "nodeType": "IfStatement",
                            "src": "48638:560:2",
                            "trueBody": {
                              "id": 5585,
                              "nodeType": "Block",
                              "src": "48665:381:2",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 5583,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 5569,
                                      "name": "_argsHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5515,
                                      "src": "48750:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 5573,
                                                "name": "_enftInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5473,
                                                "src": "48831:9:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                                }
                                              },
                                              "id": 5574,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "48841:8:2",
                                              "memberName": "inputIds",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3648,
                                              "src": "48831:18:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                "typeString": "uint256[] calldata"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5575,
                                                "name": "_enftInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5473,
                                                "src": "48876:9:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                                }
                                              },
                                              "id": 5576,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "48886:6:2",
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3656,
                                              "src": "48876:16:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5577,
                                                "name": "_enftInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5473,
                                                "src": "48919:9:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                                }
                                              },
                                              "id": 5578,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "48929:9:2",
                                              "memberName": "outputIds",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3651,
                                              "src": "48919:19:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                "typeString": "uint256[] calldata"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5579,
                                                "name": "_enftInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5473,
                                                "src": "48965:9:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                                }
                                              },
                                              "id": 5580,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "48975:13:2",
                                              "memberName": "detailsHashes",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3645,
                                              "src": "48965:23:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                                "typeString": "bytes32[] calldata"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                "typeString": "uint256[] calldata"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                "typeString": "uint256[] calldata"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                                "typeString": "bytes32[] calldata"
                                              }
                                            ],
                                            "expression": {
                                              "id": 5571,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "48794:3:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 5572,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "48798:6:2",
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "src": "48794:10:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 5581,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "48794:217:2",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5570,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "48762:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 5582,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "48762:268:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "48750:280:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "id": 5584,
                                  "nodeType": "ExpressionStatement",
                                  "src": "48750:280:2"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    "id": 5602,
                    "nodeType": "IfStatement",
                    "src": "48253:956:2",
                    "trueBody": {
                      "id": 5554,
                      "nodeType": "Block",
                      "src": "48278:240:2",
                      "statements": [
                        {
                          "expression": {
                            "id": 5552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 5540,
                              "name": "_argsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5515,
                              "src": "48293:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 5544,
                                        "name": "_enftInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5473,
                                        "src": "48366:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                        }
                                      },
                                      "id": 5545,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "48376:8:2",
                                      "memberName": "inputIds",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3648,
                                      "src": "48366:18:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 5546,
                                        "name": "_enftInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5473,
                                        "src": "48407:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                        }
                                      },
                                      "id": 5547,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "48417:9:2",
                                      "memberName": "outputIds",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3651,
                                      "src": "48407:19:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 5548,
                                        "name": "_enftInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5473,
                                        "src": "48449:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                        }
                                      },
                                      "id": 5549,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "48459:13:2",
                                      "memberName": "detailsHashes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3645,
                                      "src": "48449:23:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                        "typeString": "bytes32[] calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                        "typeString": "bytes32[] calldata"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5542,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "48333:3:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "48337:6:2",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "48333:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 5550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "48333:158:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5541,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "48305:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48305:201:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "src": "48293:213:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 5553,
                          "nodeType": "ExpressionStatement",
                          "src": "48293:213:2"
                        }
                      ]
                    }
                  },
                  "id": 5603,
                  "nodeType": "IfStatement",
                  "src": "47974:1235:2",
                  "trueBody": {
                    "id": 5535,
                    "nodeType": "Block",
                    "src": "48009:238:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 5533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5521,
                            "name": "_argsHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5515,
                            "src": "48024:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 5525,
                                      "name": "_enftInfo",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5473,
                                      "src": "48097:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                        "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                      }
                                    },
                                    "id": 5526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "48107:6:2",
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3656,
                                    "src": "48097:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5527,
                                      "name": "_enftInfo",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5473,
                                      "src": "48136:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                        "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                      }
                                    },
                                    "id": 5528,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "48146:9:2",
                                    "memberName": "outputIds",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3651,
                                    "src": "48136:19:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5529,
                                      "name": "_enftInfo",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5473,
                                      "src": "48178:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                        "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                      }
                                    },
                                    "id": 5530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "48188:13:2",
                                    "memberName": "detailsHashes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3645,
                                    "src": "48178:23:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                      "typeString": "bytes32[] calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                      "typeString": "bytes32[] calldata"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5523,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "48064:3:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 5524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "48068:6:2",
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "48064:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 5531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "48064:156:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5522,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "48036:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 5532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "48036:199:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "48024:211:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5534,
                        "nodeType": "ExpressionStatement",
                        "src": "48024:211:2"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 5607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5604,
                      "name": "_argsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5515,
                      "src": "49303:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "id": 5605,
                        "name": "_enftInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5473,
                        "src": "49316:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                          "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                        }
                      },
                      "id": 5606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "49326:6:2",
                      "memberName": "obHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3658,
                      "src": "49316:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "49303:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5611,
                  "nodeType": "IfStatement",
                  "src": "49299:69:2",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 5608,
                        "name": "Enshroud_HashDoesNotMatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3857,
                        "src": "49341:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 5609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "49341:27:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 5610,
                    "nodeType": "RevertStatement",
                    "src": "49334:34:2"
                  }
                },
                {
                  "body": {
                    "id": 5648,
                    "nodeType": "Block",
                    "src": "49764:519:2",
                    "statements": [
                      {
                        "assignments": [
                          5620
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5620,
                            "mutability": "mutable",
                            "name": "_mvoID",
                            "nameLocation": "49793:6:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 5648,
                            "src": "49779:20:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 5619,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "49779:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5625,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 5621,
                              "name": "_mvoInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5476,
                              "src": "49802:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                                "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                              }
                            },
                            "id": 5622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "49811:6:2",
                            "memberName": "mvoIDs",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3666,
                            "src": "49802:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "string calldata[] calldata"
                            }
                          },
                          "id": 5624,
                          "indexExpression": {
                            "id": 5623,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5613,
                            "src": "49818:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "49802:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49779:41:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5629,
                              "name": "_mvoID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5620,
                              "src": "49961:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 5626,
                              "name": "iMVOStaking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3716,
                              "src": "49940:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                                "typeString": "contract IMVOStaking_EnshroudProtocol"
                              }
                            },
                            "id": 5628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "49952:8:2",
                            "memberName": "checkMVO",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3402,
                            "src": "49940:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) external"
                            }
                          },
                          "id": 5630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49940:28:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5631,
                        "nodeType": "ExpressionStatement",
                        "src": "49940:28:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5635,
                              "name": "_mvoID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5620,
                              "src": "50067:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "baseExpression": {
                                "expression": {
                                  "id": 5636,
                                  "name": "_mvoInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5476,
                                  "src": "50092:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                                    "typeString": "struct EnshroudProtocol.MVOinfo calldata"
                                  }
                                },
                                "id": 5637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "50101:7:2",
                                "memberName": "mvoSigs",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3663,
                                "src": "50092:16:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "bytes calldata[] calldata"
                                }
                              },
                              "id": 5639,
                              "indexExpression": {
                                "id": 5638,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5613,
                                "src": "50109:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "50092:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "expression": {
                                "id": 5640,
                                "name": "_enftInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5473,
                                "src": "50130:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                                  "typeString": "struct EnshroudProtocol.OpsInfo calldata"
                                }
                              },
                              "id": 5641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "50140:6:2",
                              "memberName": "obHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3658,
                              "src": "50130:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 5632,
                              "name": "iMVOStaking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3716,
                              "src": "50025:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMVOStaking_EnshroudProtocol_$3412",
                                "typeString": "contract IMVOStaking_EnshroudProtocol"
                              }
                            },
                            "id": 5634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "50037:11:2",
                            "memberName": "checkMVOSig",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3411,
                            "src": "50025:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (string memory,bytes memory,bytes32) view external"
                            }
                          },
                          "id": 5642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "50025:136:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5643,
                        "nodeType": "ExpressionStatement",
                        "src": "50025:136:2"
                      },
                      {
                        "id": 5647,
                        "nodeType": "UncheckedBlock",
                        "src": "50176:96:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 5645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "50205:3:2",
                              "subExpression": {
                                "id": 5644,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5613,
                                "src": "50207:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5646,
                            "nodeType": "ExpressionStatement",
                            "src": "50205:3:2"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5616,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5613,
                      "src": "49749:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 5617,
                      "name": "_sigLen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5483,
                      "src": "49753:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "49749:11:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5649,
                  "initializationExpression": {
                    "assignments": [
                      5613
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5613,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "49742:1:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 5649,
                        "src": "49734:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "49734:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 5615,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 5614,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "49746:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "49734:13:2"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "49729:554:2"
                }
              ]
            },
            "documentation": {
              "id": 5470,
              "nodeType": "StructuredDocumentation",
              "src": "46884:422:2",
              "text": "@notice reverts on any violation of input constraints\n @param _enftInfo: OpsInfo struct containing all of the necessary Operations Block information\n @param _mvoInfo: MVOinfo struct containing array of signatures and IDs of MVOs that supplied encrypted metadata. One struct for entire operation.\n @param _flag: Flag enum corresponding to MintFromDeposit, Spend, or Withdraw context (0, 1, or 2)"
            },
            "id": 5651,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_validateInputs",
            "nameLocation": "47321:15:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5473,
                  "mutability": "mutable",
                  "name": "_enftInfo",
                  "nameLocation": "47364:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5651,
                  "src": "47347:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_OpsInfo_$3659_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.OpsInfo"
                  },
                  "typeName": {
                    "id": 5472,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5471,
                      "name": "OpsInfo",
                      "nameLocations": [
                        "47347:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3659,
                      "src": "47347:7:2"
                    },
                    "referencedDeclaration": 3659,
                    "src": "47347:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_OpsInfo_$3659_storage_ptr",
                      "typeString": "struct EnshroudProtocol.OpsInfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5476,
                  "mutability": "mutable",
                  "name": "_mvoInfo",
                  "nameLocation": "47401:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5651,
                  "src": "47384:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MVOinfo_$3667_calldata_ptr",
                    "typeString": "struct EnshroudProtocol.MVOinfo"
                  },
                  "typeName": {
                    "id": 5475,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5474,
                      "name": "MVOinfo",
                      "nameLocations": [
                        "47384:7:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3667,
                      "src": "47384:7:2"
                    },
                    "referencedDeclaration": 3667,
                    "src": "47384:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVOinfo_$3667_storage_ptr",
                      "typeString": "struct EnshroudProtocol.MVOinfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5479,
                  "mutability": "mutable",
                  "name": "_flag",
                  "nameLocation": "47425:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5651,
                  "src": "47420:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Flag_$3638",
                    "typeString": "enum EnshroudProtocol.Flag"
                  },
                  "typeName": {
                    "id": 5478,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5477,
                      "name": "Flag",
                      "nameLocations": [
                        "47420:4:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3638,
                      "src": "47420:4:2"
                    },
                    "referencedDeclaration": 3638,
                    "src": "47420:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Flag_$3638",
                      "typeString": "enum EnshroudProtocol.Flag"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47336:101:2"
            },
            "returnParameters": {
              "id": 5481,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47447:0:2"
            },
            "scope": 5834,
            "src": "47312:2978:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5820,
              "nodeType": "Block",
              "src": "50862:1349:2",
              "statements": [
                {
                  "assignments": [
                    5667
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5667,
                      "mutability": "mutable",
                      "name": "_default",
                      "nameLocation": "50880:8:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5820,
                      "src": "50873:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 5666,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "50873:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5668,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "50873:15:2"
                },
                {
                  "assignments": [
                    5670
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5670,
                      "mutability": "mutable",
                      "name": "_aId",
                      "nameLocation": "50906:4:2",
                      "nodeType": "VariableDeclaration",
                      "scope": 5820,
                      "src": "50893:17:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5669,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "50893:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5675,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5673,
                        "name": "_audId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5661,
                        "src": "50919:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "50913:5:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": {
                        "id": 5671,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "50913:5:2",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 5674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50913:13:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "50893:33:2"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    },
                    "id": 5681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 5676,
                          "name": "updateRequested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3724,
                          "src": "50943:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                            "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                          }
                        },
                        "id": 5678,
                        "indexExpression": {
                          "id": 5677,
                          "name": "_reqAddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5654,
                          "src": "50959:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "50943:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Requests_$3685_storage",
                          "typeString": "struct EnshroudProtocol.Requests storage ref"
                        }
                      },
                      "id": 5679,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "50969:10:2",
                      "memberName": "requester1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3677,
                      "src": "50943:36:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "id": 5680,
                      "name": "_default",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5667,
                      "src": "50983:8:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "src": "50943:48:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 5753,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5736,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5722,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              },
                              "id": 5715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 5710,
                                    "name": "updateRequested",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3724,
                                    "src": "51281:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                      "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                    }
                                  },
                                  "id": 5712,
                                  "indexExpression": {
                                    "id": 5711,
                                    "name": "_reqAddr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5654,
                                    "src": "51297:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "51281:25:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                    "typeString": "struct EnshroudProtocol.Requests storage ref"
                                  }
                                },
                                "id": 5713,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "51307:10:2",
                                "memberName": "requester1",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3677,
                                "src": "51281:36:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 5714,
                                "name": "_default",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "51321:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "src": "51281:48:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              },
                              "id": 5721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 5716,
                                    "name": "updateRequested",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3724,
                                    "src": "51346:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                      "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                    }
                                  },
                                  "id": 5718,
                                  "indexExpression": {
                                    "id": 5717,
                                    "name": "_reqAddr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5654,
                                    "src": "51362:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "51346:25:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                    "typeString": "struct EnshroudProtocol.Requests storage ref"
                                  }
                                },
                                "id": 5719,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "51372:10:2",
                                "memberName": "requester2",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3679,
                                "src": "51346:36:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 5720,
                                "name": "_default",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "51386:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "src": "51346:48:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "51281:113:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            },
                            "id": 5728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5723,
                              "name": "_caller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5656,
                              "src": "51411:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 5724,
                                  "name": "updateRequested",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3724,
                                  "src": "51422:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                    "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                  }
                                },
                                "id": 5726,
                                "indexExpression": {
                                  "id": 5725,
                                  "name": "_reqAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5654,
                                  "src": "51438:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "51422:25:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                  "typeString": "struct EnshroudProtocol.Requests storage ref"
                                }
                              },
                              "id": 5727,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "51448:10:2",
                              "memberName": "requester1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3677,
                              "src": "51422:36:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "src": "51411:47:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "51281:177:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                            "typeString": "enum EnshroudProtocol.ApprovalTypes"
                          },
                          "id": 5735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5730,
                            "name": "_reqType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5659,
                            "src": "51466:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                              "typeString": "enum EnshroudProtocol.ApprovalTypes"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 5731,
                                "name": "updateRequested",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3724,
                                "src": "51478:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                  "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                }
                              },
                              "id": 5733,
                              "indexExpression": {
                                "id": 5732,
                                "name": "_reqAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "51494:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "51478:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                "typeString": "struct EnshroudProtocol.Requests storage ref"
                              }
                            },
                            "id": 5734,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "51504:11:2",
                            "memberName": "requestType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3682,
                            "src": "51478:37:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                              "typeString": "enum EnshroudProtocol.ApprovalTypes"
                            }
                          },
                          "src": "51466:49:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "51281:234:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                "typeString": "enum EnshroudProtocol.ApprovalTypes"
                              },
                              "id": 5740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5737,
                                "name": "_reqType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5659,
                                "src": "51524:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                  "typeString": "enum EnshroudProtocol.ApprovalTypes"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "expression": {
                                  "id": 5738,
                                  "name": "ApprovalTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3674,
                                  "src": "51536:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                                    "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                                  }
                                },
                                "id": 5739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "51550:7:2",
                                "memberName": "Auditor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3671,
                                "src": "51536:21:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                  "typeString": "enum EnshroudProtocol.ApprovalTypes"
                                }
                              },
                              "src": "51524:33:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 5750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 5742,
                                        "name": "updateRequested",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3724,
                                        "src": "51576:15:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                          "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                        }
                                      },
                                      "id": 5744,
                                      "indexExpression": {
                                        "id": 5743,
                                        "name": "_reqAddr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5654,
                                        "src": "51592:8:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "51576:25:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                        "typeString": "struct EnshroudProtocol.Requests storage ref"
                                      }
                                    },
                                    "id": 5745,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "51602:5:2",
                                    "memberName": "audID",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3684,
                                    "src": "51576:31:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  ],
                                  "id": 5741,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "51566:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 5746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "51566:42:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 5748,
                                    "name": "_aId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5670,
                                    "src": "51622:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 5747,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "51612:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 5749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "51612:15:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "51566:61:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "51524:103:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 5752,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "51523:105:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "51281:347:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5811,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 5773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  },
                                  "id": 5766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 5761,
                                        "name": "updateRequested",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3724,
                                        "src": "51720:15:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                          "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                        }
                                      },
                                      "id": 5763,
                                      "indexExpression": {
                                        "id": 5762,
                                        "name": "_reqAddr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5654,
                                        "src": "51736:8:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "51720:25:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                        "typeString": "struct EnshroudProtocol.Requests storage ref"
                                      }
                                    },
                                    "id": 5764,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "51746:10:2",
                                    "memberName": "requester1",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3677,
                                    "src": "51720:36:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes8",
                                      "typeString": "bytes8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "id": 5765,
                                    "name": "_default",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5667,
                                    "src": "51760:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes8",
                                      "typeString": "bytes8"
                                    }
                                  },
                                  "src": "51720:48:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  },
                                  "id": 5772,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 5767,
                                        "name": "updateRequested",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3724,
                                        "src": "51785:15:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                          "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                        }
                                      },
                                      "id": 5769,
                                      "indexExpression": {
                                        "id": 5768,
                                        "name": "_reqAddr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5654,
                                        "src": "51801:8:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "51785:25:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                        "typeString": "struct EnshroudProtocol.Requests storage ref"
                                      }
                                    },
                                    "id": 5770,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "51811:10:2",
                                    "memberName": "requester2",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3679,
                                    "src": "51785:36:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes8",
                                      "typeString": "bytes8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "id": 5771,
                                    "name": "_default",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5667,
                                    "src": "51825:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes8",
                                      "typeString": "bytes8"
                                    }
                                  },
                                  "src": "51785:48:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "51720:113:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                },
                                "id": 5779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5774,
                                  "name": "_caller",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5656,
                                  "src": "51850:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 5775,
                                      "name": "updateRequested",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3724,
                                      "src": "51861:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                        "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                      }
                                    },
                                    "id": 5777,
                                    "indexExpression": {
                                      "id": 5776,
                                      "name": "_reqAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5654,
                                      "src": "51877:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "51861:25:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                      "typeString": "struct EnshroudProtocol.Requests storage ref"
                                    }
                                  },
                                  "id": 5778,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "51887:10:2",
                                  "memberName": "requester1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3677,
                                  "src": "51861:36:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                },
                                "src": "51850:47:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "51720:177:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              },
                              "id": 5786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5781,
                                "name": "_caller",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5656,
                                "src": "51914:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 5782,
                                    "name": "updateRequested",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3724,
                                    "src": "51925:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                      "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                    }
                                  },
                                  "id": 5784,
                                  "indexExpression": {
                                    "id": 5783,
                                    "name": "_reqAddr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5654,
                                    "src": "51941:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "51925:25:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                    "typeString": "struct EnshroudProtocol.Requests storage ref"
                                  }
                                },
                                "id": 5785,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "51951:10:2",
                                "memberName": "requester2",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3679,
                                "src": "51925:36:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "src": "51914:47:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "51720:241:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                              "typeString": "enum EnshroudProtocol.ApprovalTypes"
                            },
                            "id": 5793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5788,
                              "name": "_reqType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "51969:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                "typeString": "enum EnshroudProtocol.ApprovalTypes"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 5789,
                                  "name": "updateRequested",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3724,
                                  "src": "51981:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                    "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                  }
                                },
                                "id": 5791,
                                "indexExpression": {
                                  "id": 5790,
                                  "name": "_reqAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5654,
                                  "src": "51997:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "51981:25:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                  "typeString": "struct EnshroudProtocol.Requests storage ref"
                                }
                              },
                              "id": 5792,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "52007:11:2",
                              "memberName": "requestType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3682,
                              "src": "51981:37:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                "typeString": "enum EnshroudProtocol.ApprovalTypes"
                              }
                            },
                            "src": "51969:49:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "51720:298:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                  "typeString": "enum EnshroudProtocol.ApprovalTypes"
                                },
                                "id": 5798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5795,
                                  "name": "_reqType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "52027:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                    "typeString": "enum EnshroudProtocol.ApprovalTypes"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "expression": {
                                    "id": 5796,
                                    "name": "ApprovalTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3674,
                                    "src": "52039:13:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                                      "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                                    }
                                  },
                                  "id": 5797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "52053:7:2",
                                  "memberName": "Auditor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3671,
                                  "src": "52039:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                                    "typeString": "enum EnshroudProtocol.ApprovalTypes"
                                  }
                                },
                                "src": "52027:33:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 5808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 5800,
                                          "name": "updateRequested",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3724,
                                          "src": "52079:15:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                            "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                          }
                                        },
                                        "id": 5802,
                                        "indexExpression": {
                                          "id": 5801,
                                          "name": "_reqAddr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5654,
                                          "src": "52095:8:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "52079:25:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                          "typeString": "struct EnshroudProtocol.Requests storage ref"
                                        }
                                      },
                                      "id": 5803,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "52105:5:2",
                                      "memberName": "audID",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3684,
                                      "src": "52079:31:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage",
                                        "typeString": "bytes storage ref"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_storage",
                                        "typeString": "bytes storage ref"
                                      }
                                    ],
                                    "id": 5799,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "52069:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "52069:42:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 5806,
                                      "name": "_aId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5670,
                                      "src": "52125:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5805,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "52115:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "52115:15:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "52069:61:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "52027:103:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 5810,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "52026:105:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "51720:411:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5815,
                      "nodeType": "IfStatement",
                      "src": "51702:479:2",
                      "trueBody": {
                        "id": 5814,
                        "nodeType": "Block",
                        "src": "52143:38:2",
                        "statements": [
                          {
                            "expression": {
                              "hexValue": "74727565",
                              "id": 5812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "52165:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "functionReturnParameters": 5665,
                            "id": 5813,
                            "nodeType": "Return",
                            "src": "52158:11:2"
                          }
                        ]
                      }
                    },
                    "id": 5816,
                    "nodeType": "IfStatement",
                    "src": "51263:918:2",
                    "trueBody": {
                      "expression": {
                        "id": 5759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "expression": {
                            "baseExpression": {
                              "id": 5754,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3724,
                              "src": "51640:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                              }
                            },
                            "id": 5756,
                            "indexExpression": {
                              "id": 5755,
                              "name": "_reqAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5654,
                              "src": "51656:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "51640:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$3685_storage",
                              "typeString": "struct EnshroudProtocol.Requests storage ref"
                            }
                          },
                          "id": 5757,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberLocation": "51666:10:2",
                          "memberName": "requester2",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3679,
                          "src": "51640:36:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 5758,
                          "name": "_caller",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5656,
                          "src": "51679:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        "src": "51640:46:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "id": 5760,
                      "nodeType": "ExpressionStatement",
                      "src": "51640:46:2"
                    }
                  },
                  "id": 5817,
                  "nodeType": "IfStatement",
                  "src": "50939:1242:2",
                  "trueBody": {
                    "id": 5709,
                    "nodeType": "Block",
                    "src": "50993:264:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 5687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 5682,
                                "name": "updateRequested",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3724,
                                "src": "51008:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                  "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                }
                              },
                              "id": 5684,
                              "indexExpression": {
                                "id": 5683,
                                "name": "_reqAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "51024:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "51008:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                "typeString": "struct EnshroudProtocol.Requests storage ref"
                              }
                            },
                            "id": 5685,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "51034:10:2",
                            "memberName": "requester1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3677,
                            "src": "51008:36:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5686,
                            "name": "_caller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5656,
                            "src": "51047:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          },
                          "src": "51008:46:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        "id": 5688,
                        "nodeType": "ExpressionStatement",
                        "src": "51008:46:2"
                      },
                      {
                        "expression": {
                          "id": 5694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 5689,
                                "name": "updateRequested",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3724,
                                "src": "51060:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                  "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                }
                              },
                              "id": 5691,
                              "indexExpression": {
                                "id": 5690,
                                "name": "_reqAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "51076:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "51060:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                "typeString": "struct EnshroudProtocol.Requests storage ref"
                              }
                            },
                            "id": 5692,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "51086:11:2",
                            "memberName": "requestType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3682,
                            "src": "51060:37:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                              "typeString": "enum EnshroudProtocol.ApprovalTypes"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5693,
                            "name": "_reqType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5659,
                            "src": "51100:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                              "typeString": "enum EnshroudProtocol.ApprovalTypes"
                            }
                          },
                          "src": "51060:48:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                            "typeString": "enum EnshroudProtocol.ApprovalTypes"
                          }
                        },
                        "id": 5695,
                        "nodeType": "ExpressionStatement",
                        "src": "51060:48:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                            "typeString": "enum EnshroudProtocol.ApprovalTypes"
                          },
                          "id": 5699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5696,
                            "name": "_reqType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5659,
                            "src": "51118:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                              "typeString": "enum EnshroudProtocol.ApprovalTypes"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 5697,
                              "name": "ApprovalTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3674,
                              "src": "51130:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$3674_$",
                                "typeString": "type(enum EnshroudProtocol.ApprovalTypes)"
                              }
                            },
                            "id": 5698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "51144:7:2",
                            "memberName": "Auditor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3671,
                            "src": "51130:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                              "typeString": "enum EnshroudProtocol.ApprovalTypes"
                            }
                          },
                          "src": "51118:33:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5708,
                        "nodeType": "IfStatement",
                        "src": "51114:138:2",
                        "trueBody": {
                          "id": 5707,
                          "nodeType": "Block",
                          "src": "51153:99:2",
                          "statements": [
                            {
                              "expression": {
                                "id": 5705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 5700,
                                      "name": "updateRequested",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3724,
                                      "src": "51207:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$3685_storage_$",
                                        "typeString": "mapping(address => struct EnshroudProtocol.Requests storage ref)"
                                      }
                                    },
                                    "id": 5702,
                                    "indexExpression": {
                                      "id": 5701,
                                      "name": "_reqAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5654,
                                      "src": "51223:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "51207:25:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Requests_$3685_storage",
                                      "typeString": "struct EnshroudProtocol.Requests storage ref"
                                    }
                                  },
                                  "id": 5703,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "51233:5:2",
                                  "memberName": "audID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3684,
                                  "src": "51207:31:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 5704,
                                  "name": "_aId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5670,
                                  "src": "51241:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "51207:38:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 5706,
                              "nodeType": "ExpressionStatement",
                              "src": "51207:38:2"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "66616c7365",
                    "id": 5818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "52198:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 5665,
                  "id": 5819,
                  "nodeType": "Return",
                  "src": "52191:12:2"
                }
              ]
            },
            "documentation": {
              "id": 5652,
              "nodeType": "StructuredDocumentation",
              "src": "50298:395:2",
              "text": "@notice for variable updates that require update requests from three unique admins\n @param _reqAddr: address value looked up in updateRequested mapping\n @param _caller: admin invoking one of the update*() methods (truncated)\n @param _reqType: which type of approval (identifies update*() caller)\n @param _audId: optional auditors[] index for ApprovalTypes.Auditor case"
            },
            "id": 5821,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isRequestApproved",
            "nameLocation": "50708:18:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5654,
                  "mutability": "mutable",
                  "name": "_reqAddr",
                  "nameLocation": "50745:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5821,
                  "src": "50737:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5653,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50737:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5656,
                  "mutability": "mutable",
                  "name": "_caller",
                  "nameLocation": "50771:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5821,
                  "src": "50764:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 5655,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "50764:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5659,
                  "mutability": "mutable",
                  "name": "_reqType",
                  "nameLocation": "50797:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5821,
                  "src": "50783:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                    "typeString": "enum EnshroudProtocol.ApprovalTypes"
                  },
                  "typeName": {
                    "id": 5658,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5657,
                      "name": "ApprovalTypes",
                      "nameLocations": [
                        "50783:13:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3674,
                      "src": "50783:13:2"
                    },
                    "referencedDeclaration": 3674,
                    "src": "50783:13:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ApprovalTypes_$3674",
                      "typeString": "enum EnshroudProtocol.ApprovalTypes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5661,
                  "mutability": "mutable",
                  "name": "_audId",
                  "nameLocation": "50824:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5821,
                  "src": "50810:20:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5660,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50810:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50726:111:2"
            },
            "returnParameters": {
              "id": 5665,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5664,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5821,
                  "src": "50856:4:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5663,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50856:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50855:6:2"
            },
            "scope": 5834,
            "src": "50699:1512:2",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5832,
              "nodeType": "Block",
              "src": "52514:414:2",
              "statements": [
                {
                  "AST": {
                    "nativeSrc": "52534:387:2",
                    "nodeType": "YulBlock",
                    "src": "52534:387:2",
                    "statements": [
                      {
                        "body": {
                          "nativeSrc": "52661:211:2",
                          "nodeType": "YulBlock",
                          "src": "52661:211:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "52756:4:2",
                                    "nodeType": "YulLiteral",
                                    "src": "52756:4:2",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "52762:10:2",
                                    "nodeType": "YulLiteral",
                                    "src": "52762:10:2",
                                    "type": "",
                                    "value": "0xbac65e5b"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "52749:6:2",
                                  "nodeType": "YulIdentifier",
                                  "src": "52749:6:2"
                                },
                                "nativeSrc": "52749:24:2",
                                "nodeType": "YulFunctionCall",
                                "src": "52749:24:2"
                              },
                              "nativeSrc": "52749:24:2",
                              "nodeType": "YulExpressionStatement",
                              "src": "52749:24:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "52846:4:2",
                                    "nodeType": "YulLiteral",
                                    "src": "52846:4:2",
                                    "type": "",
                                    "value": "0x1c"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "52852:4:2",
                                    "nodeType": "YulLiteral",
                                    "src": "52852:4:2",
                                    "type": "",
                                    "value": "0x04"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "52839:6:2",
                                  "nodeType": "YulIdentifier",
                                  "src": "52839:6:2"
                                },
                                "nativeSrc": "52839:18:2",
                                "nodeType": "YulFunctionCall",
                                "src": "52839:18:2"
                              },
                              "nativeSrc": "52839:18:2",
                              "nodeType": "YulExpressionStatement",
                              "src": "52839:18:2"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "y",
                              "nativeSrc": "52635:1:2",
                              "nodeType": "YulIdentifier",
                              "src": "52635:1:2"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "x",
                                  "nativeSrc": "52641:1:2",
                                  "nodeType": "YulIdentifier",
                                  "src": "52641:1:2"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "52652:1:2",
                                          "nodeType": "YulLiteral",
                                          "src": "52652:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nativeSrc": "52648:3:2",
                                        "nodeType": "YulIdentifier",
                                        "src": "52648:3:2"
                                      },
                                      "nativeSrc": "52648:6:2",
                                      "nodeType": "YulFunctionCall",
                                      "src": "52648:6:2"
                                    },
                                    {
                                      "name": "y",
                                      "nativeSrc": "52656:1:2",
                                      "nodeType": "YulIdentifier",
                                      "src": "52656:1:2"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "div",
                                    "nativeSrc": "52644:3:2",
                                    "nodeType": "YulIdentifier",
                                    "src": "52644:3:2"
                                  },
                                  "nativeSrc": "52644:14:2",
                                  "nodeType": "YulFunctionCall",
                                  "src": "52644:14:2"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nativeSrc": "52638:2:2",
                                "nodeType": "YulIdentifier",
                                "src": "52638:2:2"
                              },
                              "nativeSrc": "52638:21:2",
                              "nodeType": "YulFunctionCall",
                              "src": "52638:21:2"
                            }
                          ],
                          "functionName": {
                            "name": "mul",
                            "nativeSrc": "52631:3:2",
                            "nodeType": "YulIdentifier",
                            "src": "52631:3:2"
                          },
                          "nativeSrc": "52631:29:2",
                          "nodeType": "YulFunctionCall",
                          "src": "52631:29:2"
                        },
                        "nativeSrc": "52628:244:2",
                        "nodeType": "YulIf",
                        "src": "52628:244:2"
                      },
                      {
                        "nativeSrc": "52886:24:2",
                        "nodeType": "YulAssignment",
                        "src": "52886:24:2",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "x",
                                  "nativeSrc": "52899:1:2",
                                  "nodeType": "YulIdentifier",
                                  "src": "52899:1:2"
                                },
                                {
                                  "name": "y",
                                  "nativeSrc": "52902:1:2",
                                  "nodeType": "YulIdentifier",
                                  "src": "52902:1:2"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nativeSrc": "52895:3:2",
                                "nodeType": "YulIdentifier",
                                "src": "52895:3:2"
                              },
                              "nativeSrc": "52895:9:2",
                              "nodeType": "YulFunctionCall",
                              "src": "52895:9:2"
                            },
                            {
                              "name": "WAD",
                              "nativeSrc": "52906:3:2",
                              "nodeType": "YulIdentifier",
                              "src": "52906:3:2"
                            }
                          ],
                          "functionName": {
                            "name": "div",
                            "nativeSrc": "52891:3:2",
                            "nodeType": "YulIdentifier",
                            "src": "52891:3:2"
                          },
                          "nativeSrc": "52891:19:2",
                          "nodeType": "YulFunctionCall",
                          "src": "52891:19:2"
                        },
                        "variableNames": [
                          {
                            "name": "z",
                            "nativeSrc": "52886:1:2",
                            "nodeType": "YulIdentifier",
                            "src": "52886:1:2"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "shanghai",
                  "externalReferences": [
                    {
                      "declaration": 3697,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "52906:3:2",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5824,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "52641:1:2",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5824,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "52899:1:2",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5826,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "52635:1:2",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5826,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "52656:1:2",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5826,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "52902:1:2",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5829,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "52886:1:2",
                      "valueSize": 1
                    }
                  ],
                  "id": 5831,
                  "nodeType": "InlineAssembly",
                  "src": "52525:396:2"
                }
              ]
            },
            "documentation": {
              "id": 5822,
              "nodeType": "StructuredDocumentation",
              "src": "52219:187:2",
              "text": "@dev Solbase mulDiv operation with WAD as denominator. Equivalent to `(x * y) / WAD` rounded down. source: https://github.com/Sol-DAO/solbase/blob/main/src/utils/FixedPointMathLib.sol"
            },
            "id": 5833,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mulWadDown",
            "nameLocation": "52421:11:2",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5827,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5824,
                  "mutability": "mutable",
                  "name": "x",
                  "nameLocation": "52451:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5833,
                  "src": "52443:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "52443:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5826,
                  "mutability": "mutable",
                  "name": "y",
                  "nameLocation": "52471:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5833,
                  "src": "52463:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5825,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "52463:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52432:47:2"
            },
            "returnParameters": {
              "id": 5830,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5829,
                  "mutability": "mutable",
                  "name": "z",
                  "nameLocation": "52511:1:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 5833,
                  "src": "52503:9:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5828,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "52503:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52502:11:2"
            },
            "scope": 5834,
            "src": "52412:516:2",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 5835,
        "src": "7004:45927:2",
        "usedErrors": [
          3435,
          3437,
          3439,
          3845,
          3847,
          3849,
          3851,
          3855,
          3857,
          3859,
          3861,
          3863,
          3865,
          3867,
          3869,
          3871,
          3873,
          3875,
          7807
        ],
        "usedEvents": [
          3426,
          3432,
          3775,
          3781,
          3791,
          3799,
          3806,
          3810,
          3820,
          3828
        ]
      }
    ],
    "src": "33:52900:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.28+commit.7893614a.Linux.g++"
  },
  "networks": {
    "1": {
      "events": {
        "0x235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a11133": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "admin",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "status",
              "type": "bool"
            }
          ],
          "name": "AdminUpdated",
          "type": "event"
        },
        "0xbf9e968c6a35f832352c8dfb5236ab1ce4a6dd21df144cd8c490951c1b08133a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "auditor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "audId",
              "type": "string"
            }
          ],
          "name": "AuditorUpdated",
          "type": "event"
        },
        "0x228adef123a7fe6b727889b4d24b39b39de663428214fd757c6c501fb98d8494": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "DepositERC20",
          "type": "event"
        },
        "0x57e8e547a3ef8d890c570ca885b0a8c441be3070e36b7ad4c7d6b9d9316ff2ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "weiAmount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "DepositETH",
          "type": "event"
        },
        "0xa2e8a919645449f1c07cb9a6c38ec0709a2b4fd6655a4514db6cb4db0dbccb40": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "audId",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "GreyListAdd",
          "type": "event"
        },
        "0xcb212940a2702565ddce0f677e5a8584ed288e9afad36654df10f548b05a6d48": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "GreyListDeletion",
          "type": "event"
        },
        "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        "0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        "0x96568b8cd8bec3b3f1734539526708d2164d43d3fc86a093a56d6b936665839e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "withdrawer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "WithdrawERC20",
          "type": "event"
        },
        "0x33414635cb2f2957fad92617dadad2a2a914b1914a9db56a5836fe13d56ef6f5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "withdrawer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "weiAmount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "WithdrawETH",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x6aea2e04f281eC4eA01222dcC44Be6A30281EAb7",
      "transactionHash": "0xc90b724a7b0ca69dcfa3681d9124f7c2e9acbd233116e2c0db6f84e6aa125f16"
    },
    "1337": {
      "events": {
        "0x235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a11133": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "admin",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "status",
              "type": "bool"
            }
          ],
          "name": "AdminUpdated",
          "type": "event"
        },
        "0xbf9e968c6a35f832352c8dfb5236ab1ce4a6dd21df144cd8c490951c1b08133a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "auditor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "audId",
              "type": "string"
            }
          ],
          "name": "AuditorUpdated",
          "type": "event"
        },
        "0x228adef123a7fe6b727889b4d24b39b39de663428214fd757c6c501fb98d8494": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "DepositERC20",
          "type": "event"
        },
        "0x57e8e547a3ef8d890c570ca885b0a8c441be3070e36b7ad4c7d6b9d9316ff2ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "weiAmount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "DepositETH",
          "type": "event"
        },
        "0x544dc27952e4b1595eda1b6326d67cb4f9ecdea59e5701326ae637d06217c251": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "string",
              "name": "audId",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "string[]",
              "name": "reasons",
              "type": "string[]"
            }
          ],
          "name": "GreyListAdd",
          "type": "event"
        },
        "0xcb212940a2702565ddce0f677e5a8584ed288e9afad36654df10f548b05a6d48": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "GreyListDeletion",
          "type": "event"
        },
        "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        "0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        "0x96568b8cd8bec3b3f1734539526708d2164d43d3fc86a093a56d6b936665839e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "withdrawer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "WithdrawERC20",
          "type": "event"
        },
        "0x33414635cb2f2957fad92617dadad2a2a914b1914a9db56a5836fe13d56ef6f5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "withdrawer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "weiAmount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "WithdrawETH",
          "type": "event"
        },
        "0xa2e8a919645449f1c07cb9a6c38ec0709a2b4fd6655a4514db6cb4db0dbccb40": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "audId",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "GreyListAdd",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x3A125bE5bB8A3E1C171947c384795B4a488B74A0",
      "transactionHash": "0xaa2713bdc019346483b6beb8f7e2b2ec0f54e1cc8f7ce0458e1f77a257242d0e"
    },
    "11155111": {
      "events": {
        "0x235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a11133": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "admin",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "status",
              "type": "bool"
            }
          ],
          "name": "AdminUpdated",
          "type": "event"
        },
        "0xbf9e968c6a35f832352c8dfb5236ab1ce4a6dd21df144cd8c490951c1b08133a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "auditor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "audId",
              "type": "string"
            }
          ],
          "name": "AuditorUpdated",
          "type": "event"
        },
        "0x228adef123a7fe6b727889b4d24b39b39de663428214fd757c6c501fb98d8494": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "DepositERC20",
          "type": "event"
        },
        "0x57e8e547a3ef8d890c570ca885b0a8c441be3070e36b7ad4c7d6b9d9316ff2ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "weiAmount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "DepositETH",
          "type": "event"
        },
        "0xa2e8a919645449f1c07cb9a6c38ec0709a2b4fd6655a4514db6cb4db0dbccb40": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "audId",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "GreyListAdd",
          "type": "event"
        },
        "0xcb212940a2702565ddce0f677e5a8584ed288e9afad36654df10f548b05a6d48": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "GreyListDeletion",
          "type": "event"
        },
        "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "TransferSingle",
          "type": "event"
        },
        "0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "value",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "URI",
          "type": "event"
        },
        "0x96568b8cd8bec3b3f1734539526708d2164d43d3fc86a093a56d6b936665839e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "withdrawer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "tokenContract",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "WithdrawERC20",
          "type": "event"
        },
        "0x33414635cb2f2957fad92617dadad2a2a914b1914a9db56a5836fe13d56ef6f5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "withdrawer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "weiAmount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "WithdrawETH",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xc353a083050bFF5c89cD123B827fDd6a0314Ac8a",
      "transactionHash": "0x4e3946afa80d68817c7e47ecfe1715b36be1e0ee751154f998c7812a7811f049"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-31T22:08:32.968Z",
  "networkType": "ethereum",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "auditorGreyList(string,uint256[],string[])": {
        "params": {
          "_audId": ": ID of the auditor calling this function",
          "_ids": ": array of eNFT IDs for which the auditor is altering greylist status",
          "_reasons": ": array of strings corresponding to the reason for each respective '_ids' greylisting"
        }
      },
      "constructor": {
        "details": "note math of fees. Currently a 5e16 fee corresponds to 5%, as all fees are calculated with a denominator of 1e18.",
        "params": {
          "_baseUri": ": baseURI for eNFTs, which does not operate as a normal \"baseURI\" but as a notification to check the event log of this protocol contract for the eNFT's id. This constructor-passed baseURI also removes the need for a uriFetcher",
          "_confBlocks": ": set immutable variable 'confirmationBlocks', which provides the minimum \"dwell time\" for an eNFT before redemption",
          "_dai": ": token contract address for DAI. Immutable. 0x6B175474E89094C44Da98b954EedeAC495271d0F for DAI on ETH mainnet.",
          "_depositFee": ": initial per-asset percentage fee from user upon successful shielding, in 18 decimals (which also corresponds to wei). Must be < 5e17.",
          "_initialAdmins": ": array of initial addresses with admin status. Should be at least 3 total initial admins, in order to initialise the MVOStaking address",
          "_requiredSigs": ": immutable required number of MVO signatures for a valid Operations Block",
          "_treasury": ": treasury address to receive 5% of deposit and withdraw fees for project operations.",
          "_weth": ": token contract address for WETH. Immutable. 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 for WETH9 on ETH mainnet.",
          "_withdrawFee": ": initial per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals (which also corresponds to wei). Must be < 5e17."
        }
      },
      "depositEth(address)": {
        "details": "deposited ETH is immediately converted to WETH to address(this) (except for deposit fee sent to treasury and daoPool, which remains in ETH)",
        "params": {
          "_depositor": ": address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)"
        }
      },
      "depositTokens(address,address,uint256)": {
        "details": "_amount of tokens must first be approved for transferFrom by address(this). While there is no token validity check here, the MVO layer will check when later generating operations block",
        "params": {
          "_amount": ": amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())",
          "_depositor": ": address of depositor (msg.sender if calling this directly, or can be a specified user if an external contract is calling this function, such as daoPool)",
          "_tokenContract": ": ERC20-compatible token contract address"
        }
      },
      "depositTokensWithPermit(address,address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
        "params": {
          "_amount": ": amount of tokens deposited, 18 decimals (hardcoded into mulWadDown in _depositTokens())",
          "_deadline": ": deadline for permit approval usage",
          "_depositor": ": address of depositor, to whom the EIP712 signature corresponds (often, msg.sender)",
          "_nonce": ": user's nonce on the erc20 contract, for replay protection",
          "_tokenContract": ": ERC20-compatible token contract address",
          "r": ": ECDSA sig param",
          "s": ": ECDSA sig param",
          "v": ": ECDSA sig param"
        }
      },
      "mintENFTsFromDeposit((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),address)": {
        "details": "because msg.sender is used to check the 'assetBalances' mapping (to prevent spoofing on a _depositor variable), other contracts using this function will have to use delegatecall",
        "params": {
          "_mvoInfo": ": MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata",
          "_opsInfo": ": OpsInfo struct containing all of the necessary Operations Block information",
          "_tokenContract": ": ERC20-compatible token contract address; pass the 'weth' address to mint an eNFT for ETH deposits"
        }
      },
      "redeemENFTsAndWithdraw((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),uint256[],bytes16[],address)": {
        "details": "caller will be able to access decrypted eNFT metadata off chain in order to supply info to this function",
        "params": {
          "_amounts": ": array of amounts of tokens/asset requested for withdrawal, in order by _id",
          "_mvoInfo": ": MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs",
          "_opsInfo": ": OpsInfo struct containing all of the necessary Operations Block information",
          "_rand": ": array of optional randomly generated bytes, represented in base64, generated client-side.",
          "_tokenContract": ": token contract address requested for withdraw. Provide zero address for ETH/native token withdrawal."
        }
      },
      "removeGreylistStatus(uint256)": {
        "params": {
          "_id": ": ID of greylisted eNFT, to be removed from greylist"
        }
      },
      "setMVOStakingAddress(address)": {
        "details": "must be set after mvoStaking contract is deployed, and before the protocol is used",
        "params": {
          "_mvoStaking": ": contract address for MVO storage and logic"
        }
      },
      "spendENFTs((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]))": {
        "details": "only necessary to check msg.sender's balanceOf to burn the spent eNFT -- the new eNFTs will be produced by calling _mintNewENFTs(). Call only after new OperationsBlock received for subsequent eNFT mints.",
        "params": {
          "_enftInfo": ": OpsInfo struct containing all of the necessary OperationsBlock information to mint new eNFTs",
          "_mvoInfo": ": MVOinfo struct containing array of signatures and IDs by MVOs that supplied encrypted metadata to mint new eNFTs"
        }
      },
      "updateAdmin(address,bool)": {
        "params": {
          "_addr": ": address whose admin status is being updated",
          "_status": ": true for admin status grant, false for revocation"
        }
      },
      "updateAuditor(address,string)": {
        "params": {
          "_addr": ": address of auditor, or zero address to remove an auditor",
          "_audId": ": ID of the auditor being updated by admin"
        }
      },
      "updateDaoPool(address)": {
        "params": {
          "_newDaoPool": ": new DAO Pool address"
        }
      },
      "updateFees(address,uint256,uint256)": {
        "params": {
          "_newDepositFee": ": new per-asset percentage fee from user upon successful shielding, in 18 decimals. Must be < 5e17.",
          "_newWithdrawFee": ": new per-asset percentage fee from eNFT burner upon successful eNFT burning/withdrawal, in 18 decimals. Must be < 5e17.",
          "_tokenAddr": ": address of token whose fees are being updated. Leave as zero address for global changes (native token always has global fees)"
        }
      },
      "updateTreasury(address)": {
        "params": {
          "_newTreasury": ": new treasury address"
        }
      },
      "uri(string)": {
        "params": {
          "_metadata": ": eNFT token metadata"
        },
        "returns": {
          "_0": "uri for the supplied '_metadata'; see notes on baseURI in the constructor natSpec"
        }
      }
    },
    "stateVariables": {
      "daiToken": {
        "details": "to enable dai-pattern permit (ETH mainnet, possibly elsewhere)"
      }
    },
    "version": 1
  },
  "userdoc": {
    "errors": {
      "UnsafeRecipient()": [
        {
          "notice": "----------------------------------------------------------------------- Custom Errors -----------------------------------------------------------------------"
        }
      ]
    },
    "events": {
      "AdminUpdated(address,bool)": {
        "notice": "certain events excluded for contract size considerations, such as unlikely/rare variable updates (iMVOStaking, treasury, etc.)"
      },
      "TransferSingle(address,address,address,uint256,uint256)": {
        "notice": "----------------------------------------------------------------------- Events -----------------------------------------------------------------------"
      }
    },
    "kind": "user",
    "methods": {
      "assetBalances(address,address)": {
        "notice": "maps a user to a mapping of tokenContract to amount deposited in this contract"
      },
      "auditorGreyList(string,uint256[],string[])": {
        "notice": "for an auditor to change eNFT(s) greylist status"
      },
      "auditors(string)": {
        "notice": "maps auditor Id to their address. Zero address means no such auditor exists."
      },
      "balanceOf(address,uint256)": {
        "notice": "----------------------------------------------------------------------- ERC1155 Storage -----------------------------------------------------------------------"
      },
      "depositEth(address)": {
        "notice": "deposit ETH/applicable native token. Msg.value is amount of deposit, which is in wei (18 decimals)."
      },
      "depositTokens(address,address,uint256)": {
        "notice": "deposit ERC20-compatible tokens after '_depositor' approved address(this) for '_amount' of tokens in the '_tokenContract'"
      },
      "depositTokensWithPermit(address,address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
        "notice": "deposit an ERC20-compatible asset which supports gasless ERC20Permit via EIP2612 to approve this address for transferFrom msg.sender"
      },
      "enftUnlockTime(uint256)": {
        "notice": "sets dwell time for an eNFT before redemption by mapping eNFT id to (mint block.number + 'confirmationBlocks')"
      },
      "idToAuditorGreylist(uint256)": {
        "notice": "maps an eNFT's id number to error string; contains the AudId of the Auditor node who so marked it, and may contain a reason code."
      },
      "mintENFTsFromDeposit((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),address)": {
        "notice": "called by an address which has already deposited assets into this contract to mintENFTs based on some amount of those assets up to msg.sender's 'assetBalances'"
      },
      "redeemENFTsAndWithdraw((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]),uint256[],bytes16[],address)": {
        "notice": "for eNFT holder to redeem their eNFT(s) for asset withdrawal via their decrypted eNFT metadata"
      },
      "removeGreylistStatus(uint256)": {
        "notice": "upon call by three admins, remove an eNFT's greylist status"
      },
      "setMVOStakingAddress(address)": {
        "notice": "initialise (or replace) the MVOStaking contract address, by three different admins"
      },
      "spendENFTs((address[],bytes32[],uint256[],uint256[],string[],uint256,bytes32),(bytes[],string[]))": {
        "notice": "for a holder of eNFT(s) to spend their eNFT(s) (after receiving new OperationsBlock) for new eNFT(s) to be subsequently minted, without publicly compromising the corresponding asset or amount in the subsequently minted eNFTs"
      },
      "supportsInterface(bytes4)": {
        "notice": "----------------------------------------------------------------------- ERC165 Logic -----------------------------------------------------------------------"
      },
      "treasuryFee()": {
        "notice": "initial treasury fee is 5%. To remove, DAO voting app (once added as admin) and two other admins can vote to change treasury address to DAO pool"
      },
      "updateAdmin(address,bool)": {
        "notice": "allows an admin to designate another admin or revoke an active admin; can be used in event of malicious admin/exploit, to remove initial admins, add DAO voting addresses, etc."
      },
      "updateAuditor(address,string)": {
        "notice": "for three admins to update an auditor's status"
      }
    },
    "notice": "Enshroud protocol contract",
    "version": 1
  }
}