{
  "contractName": "MVOStaking",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_enshroudProtocol",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_enshroudToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_timelockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_minStake",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor",
      "payable": true
    },
    {
      "inputs": [],
      "name": "AmountLargerThanBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AmountLargerThanStake",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AmountLargerThanWithdrawable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DuesTooLarge",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IDAlreadyInUse",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IDAndMsgSenderMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IncorrectSigLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidChainId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidSignature",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MintPeriodExpired",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotActiveMVO",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyPointsRobot",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyProtocolContract",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyTimelockManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PoolDoesNotExist",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Reentrancy",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnclaimedPoints",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "newCodeHash",
          "type": "bytes32"
        }
      ],
      "name": "CodeHashChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "poolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "dues",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "creatorMvoID",
          "type": "string"
        }
      ],
      "name": "MVOPoolCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "poolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "creatorMvoID",
          "type": "string"
        }
      ],
      "name": "MVOPoolDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "mvoID",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stakingQuantum",
          "type": "uint256"
        }
      ],
      "name": "MVOStakeUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "newProtocol",
          "type": "address"
        }
      ],
      "name": "MVOStaking_ProtocolUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "MVOStaking_Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "MVOStaking_Unstaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "mvoID",
          "type": "string"
        },
        {
          "components": [
            {
              "internalType": "string",
              "name": "listenURI",
              "type": "string"
            },
            {
              "internalType": "address payable",
              "name": "stakingAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "signingAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "encrPubkey",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "stakingQuantum",
              "type": "uint256"
            },
            {
              "internalType": "uint120",
              "name": "memberPoolId",
              "type": "uint120"
            },
            {
              "internalType": "uint120",
              "name": "rating",
              "type": "uint120"
            },
            {
              "internalType": "bool",
              "name": "active",
              "type": "bool"
            }
          ],
          "indexed": false,
          "internalType": "struct MVOStaking.MVO",
          "name": "updatedMVO",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "MVOStatusChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMinStake",
          "type": "uint256"
        }
      ],
      "name": "MinimumStakeUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "mvoAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "points",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "PointsAwarded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "botAddress",
          "type": "address"
        }
      ],
      "name": "PointsBotUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "mvoAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "points",
          "type": "uint256"
        }
      ],
      "name": "PointsReduced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "newPoolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldPoolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "memberMvoID",
          "type": "string"
        }
      ],
      "name": "PoolMembershipUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "codeHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "enshroudProtocols",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "enshroudToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "genesisBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "idToMVO",
      "outputs": [
        {
          "internalType": "string",
          "name": "listenURI",
          "type": "string"
        },
        {
          "internalType": "address payable",
          "name": "stakingAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "signingAddress",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "encrPubkey",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "stakingQuantum",
          "type": "uint256"
        },
        {
          "internalType": "uint120",
          "name": "memberPoolId",
          "type": "uint120"
        },
        {
          "internalType": "uint120",
          "name": "rating",
          "type": "uint120"
        },
        {
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "idToMVOPool",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "poolAddress",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "dues",
          "type": "uint96"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "minStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "mvoIds",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "mvoIdsIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "mvoIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "pointsBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "protoIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "timelockManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "timelocks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "remainingAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "releaseStart",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "releaseEnd",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "totalPoints",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "totalStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "yearToTokensRemaining",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "_mvoIDs",
          "type": "string[]"
        }
      ],
      "name": "awardPoints",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "string[]",
          "name": "_mvoIDs",
          "type": "string[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_points",
          "type": "uint256[]"
        }
      ],
      "name": "importPoints",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_points",
          "type": "uint256"
        }
      ],
      "name": "reducePoints",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        }
      ],
      "name": "claim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "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": "stakeWithPermit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_staker",
          "type": "address"
        },
        {
          "internalType": "uint128",
          "name": "_releaseStart",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "_releaseEnd",
          "type": "uint128"
        }
      ],
      "name": "stakeTimelock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_miningPoolId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_dues",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        }
      ],
      "name": "createMVOPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_miningPoolId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        }
      ],
      "name": "deleteMVOPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newMiningPoolId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        }
      ],
      "name": "updateMVOPoolMembership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_newCodeHash",
          "type": "bytes32"
        }
      ],
      "name": "updateCodeHash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        },
        {
          "components": [
            {
              "internalType": "string",
              "name": "listenURI",
              "type": "string"
            },
            {
              "internalType": "address payable",
              "name": "stakingAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "signingAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "encrPubkey",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "stakingQuantum",
              "type": "uint256"
            },
            {
              "internalType": "uint120",
              "name": "memberPoolId",
              "type": "uint120"
            },
            {
              "internalType": "uint120",
              "name": "rating",
              "type": "uint120"
            },
            {
              "internalType": "bool",
              "name": "active",
              "type": "bool"
            }
          ],
          "internalType": "struct MVOStaking.MVO",
          "name": "_mvo",
          "type": "tuple"
        }
      ],
      "name": "updateMvoStatus",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newMinStake",
          "type": "uint256"
        }
      ],
      "name": "updateMinStake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newProtocol",
          "type": "address"
        }
      ],
      "name": "updateProtocol",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newBot",
          "type": "address"
        }
      ],
      "name": "updatePointsBot",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "_mvoSig",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_obHash",
          "type": "bytes32"
        }
      ],
      "name": "checkMVOSig",
      "outputs": [],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_mvoID",
          "type": "string"
        }
      ],
      "name": "checkMVO",
      "outputs": [],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_enshroudProtocol\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_enshroudToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_timelockManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minStake\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountLargerThanBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountLargerThanStake\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountLargerThanWithdrawable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuesTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDAlreadyInUse\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDAndMsgSenderMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectSigLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintPeriodExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotActiveMVO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPointsRobot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyProtocolContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTimelockManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnclaimedPoints\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newCodeHash\",\"type\":\"bytes32\"}],\"name\":\"CodeHashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dues\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"creatorMvoID\",\"type\":\"string\"}],\"name\":\"MVOPoolCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"creatorMvoID\",\"type\":\"string\"}],\"name\":\"MVOPoolDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"mvoID\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakingQuantum\",\"type\":\"uint256\"}],\"name\":\"MVOStakeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newProtocol\",\"type\":\"address\"}],\"name\":\"MVOStaking_ProtocolUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"MVOStaking_Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"MVOStaking_Unstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"mvoID\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"listenURI\",\"type\":\"string\"},{\"internalType\":\"address payable\",\"name\":\"stakingAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signingAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"encrPubkey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"stakingQuantum\",\"type\":\"uint256\"},{\"internalType\":\"uint120\",\"name\":\"memberPoolId\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"rating\",\"type\":\"uint120\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct MVOStaking.MVO\",\"name\":\"updatedMVO\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"MVOStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinStake\",\"type\":\"uint256\"}],\"name\":\"MinimumStakeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mvoAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"PointsAwarded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"botAddress\",\"type\":\"address\"}],\"name\":\"PointsBotUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mvoAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"PointsReduced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newPoolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldPoolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memberMvoID\",\"type\":\"string\"}],\"name\":\"PoolMembershipUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"_mvoIDs\",\"type\":\"string[]\"}],\"name\":\"awardPoints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"}],\"name\":\"checkMVO\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_mvoSig\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_obHash\",\"type\":\"bytes32\"}],\"name\":\"checkMVOSig\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"codeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_miningPoolId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_dues\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"}],\"name\":\"createMVOPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_miningPoolId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"}],\"name\":\"deleteMVOPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"enshroudProtocols\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enshroudToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"idToMVO\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"listenURI\",\"type\":\"string\"},{\"internalType\":\"address payable\",\"name\":\"stakingAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signingAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"encrPubkey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"stakingQuantum\",\"type\":\"uint256\"},{\"internalType\":\"uint120\",\"name\":\"memberPoolId\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"rating\",\"type\":\"uint120\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"idToMVOPool\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"dues\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"},{\"internalType\":\"string[]\",\"name\":\"_mvoIDs\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_points\",\"type\":\"uint256[]\"}],\"name\":\"importPoints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"mvoIds\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"mvoIdsIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mvoIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pointsBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protoIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_points\",\"type\":\"uint256\"}],\"name\":\"reducePoints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_staker\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_releaseStart\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_releaseEnd\",\"type\":\"uint128\"}],\"name\":\"stakeTimelock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"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\":\"stakeWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timelockManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"timelocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"releaseStart\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"releaseEnd\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_newCodeHash\",\"type\":\"bytes32\"}],\"name\":\"updateCodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newMiningPoolId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"}],\"name\":\"updateMVOPoolMembership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newMinStake\",\"type\":\"uint256\"}],\"name\":\"updateMinStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"listenURI\",\"type\":\"string\"},{\"internalType\":\"address payable\",\"name\":\"stakingAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signingAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"encrPubkey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"stakingQuantum\",\"type\":\"uint256\"},{\"internalType\":\"uint120\",\"name\":\"memberPoolId\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"rating\",\"type\":\"uint120\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct MVOStaking.MVO\",\"name\":\"_mvo\",\"type\":\"tuple\"}],\"name\":\"updateMvoStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newBot\",\"type\":\"address\"}],\"name\":\"updatePointsBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newProtocol\",\"type\":\"address\"}],\"name\":\"updateProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_mvoID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"yearToTokensRemaining\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"awardPoints(string[])\":{\"details\":\"uses idToMVO mapping to determine the committee MVO staking addresses; sigs not currently checked since only enshroudProtocol can call this method, and every invocation is preceeded by a call to checkMVOSig(); Reentrant-protected by each function in EnshroudProtocol which is able to call this function\",\"params\":{\"_mvoIDs\":\": IDs of MVOs for the transaction\"}},\"checkMVO(string)\":{\"params\":{\"_mvoID\":\": ID of MVO to access relevant struct containing MVO information\"}},\"checkMVOSig(string,bytes,bytes32)\":{\"params\":{\"_mvoID\":\": ID of MVO to access relevant struct containing MVO information\",\"_mvoSig\":\": signature of MVO to check against its ID using the idToMVO mapping\",\"_obHash\":\": keccak256 hash of the Operations Block\"}},\"claim(string)\":{\"details\":\"entire 'pointsBalance' of msg.sender is redeemed - claiming a partial balance is not supported for efficiency as it is generally more advantageous to claim as soon as possibleclaimable mint amount updates linearly by block.number within each applicable year\",\"params\":{\"_mvoID\":\": MVO ID of msg.sender\"}},\"constructor\":{\"params\":{\"_enshroudProtocol\":\": Enshroud Protocol contract address\",\"_enshroudToken\":\": $ENSHROUD token contract address. Immutable.\",\"_minStake\":\": initial minimum staked amount of enshroudToken required for a signing MVO\",\"_timelockManager\":\": contract address for $ENSHROUD token timelock manager. Immutable.\"}},\"createMVOPool(uint256,uint256,string)\":{\"details\":\"to prevent dues dodging, user must claim any points first\",\"params\":{\"_dues\":\": amount of dues required to be a pool member, in 18 decimals (which also corresponds to wei). Must be < 5e17 (< 50%). 5e16 corresponds to 5%.\",\"_miningPoolId\":\": unique ID of prospective MVO pool. Cannot be 0 -- this is the default value and indicates an MVO is not in a pool in its MVO struct\",\"_mvoID\":\": MVO ID of msg.sender\"}},\"deleteMVOPool(uint256,string)\":{\"params\":{\"_miningPoolId\":\": msg.sender's MVO pool ID\",\"_mvoID\":\": MVO ID of msg.sender\"}},\"importPoints(uint256,string[],uint256[])\":{\"details\":\"used to migrate points earned by MVOs on other chains to mainnet where staking and point claims actually take place\",\"params\":{\"_chainId\":\": the chain the bot is importing the points from\",\"_mvoIDs\":\": IDs of MVOs for which points are being imported\",\"_points\":\": number of points for each listed MVO\"}},\"reducePoints(string,uint256)\":{\"params\":{\"_mvoID\":\": ID of MVO whose points are being reduced\",\"_points\":\": amount of points being subtracted from the relevant MVO's 'pointsBalance'\"}},\"stake(string,uint256)\":{\"details\":\"updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\",\"params\":{\"_amount\":\": amount to be staked\",\"_mvoID\":\": MVO ID of msg.sender\"}},\"stakeTimelock(string,uint256,address,uint128,uint128)\":{\"details\":\"updates 'totalStake' and 'stakingQuantum' MVO struct member for '_staker'one timelock per '_staker' at a time, though a further amount may be added to 'timelocks[_staker]' if the MVO owner consolidates multiple timelocks. nonReentrant modifier unnecessary here as it is already present in 'withdrawTimelockToMVOStaking()' in TimelockManager contract, which is the only permitted caller of this function\",\"params\":{\"_amount\":\": amount to be staked\",\"_mvoID\":\": MVO ID of '_staker'\",\"_releaseEnd\":\": ending block number of timelock\",\"_releaseStart\":\": starting block number of timelock\",\"_staker\":\": address of timelock beneficiary corresponding to '_mvoID' that will call the initiating function in 'timelockManager'\"}},\"stakeWithPermit(string,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\",\"params\":{\"_amount\":\": amount to be staked\",\"_deadline\":\": block limit by which permit must be used\",\"_mvoID\":\": MVO ID of msg.sender\",\"r\":\"- ECDSA sig param\",\"s\":\"- ECDSA sig param\",\"v\":\"- ECDSA sig param\"}},\"updateCodeHash(bytes32)\":{\"details\":\"admin should apprise users of how to verify the 'codeHash' -- the 'codeHash' is publicly accessible via getter as a public storage variable\",\"params\":{\"_newCodeHash\":\": new bytes32 hash of the off-chain codebase or location\"}},\"updateMVOPoolMembership(uint256,string)\":{\"details\":\"to prevent dues dodging, user must claim any points first\",\"params\":{\"_mvoID\":\": MVO ID of msg.sender\",\"_newMiningPoolId\":\": pool ID which msg.sender desires to join; pass 0 to leave a pool without a replacement\"}},\"updateMinStake(uint256)\":{\"params\":{\"_newMinStake\":\": new minimum amount of $ENSHROUD tokens required for a MVO to stake\"}},\"updateMvoStatus(string,(string,address,address,string,uint256,uint120,uint120,bool))\":{\"details\":\"single admin used here for ease and reversibility of any malicious or mistaken update\",\"params\":{\"_mvo\":\": new or replacement MVO struct for the given ID\",\"_mvoID\":\": string ID for a given MVO\"}},\"updatePointsBot(address)\":{\"params\":{\"_newBot\":\": new bot authorized to import points from other chains\"}},\"updateProtocol(address)\":{\"params\":{\"_newProtocol\":\": new Enshroud Protocol contract address, changing 'enshroudProtocol'; must correctly implement public 'adminStatus[]' mapping\"}},\"withdraw(string,uint256)\":{\"details\":\"updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.senderstake can only be withdrawn if msg.sender's '_mvoID' is correct; if msg.sender's MVO struct is maliciously altered by an admin, will need to be corrected\",\"params\":{\"_amount\":\": amount to be withdrawn\",\"_mvoID\":\": MVO ID of msg.sender\"}}},\"stateVariables\":{\"BLOCKS_PER_YEAR\":{\"details\":\"this must be altered for deployments on other chains\"},\"DECIMALS\":{\"details\":\"18 decimal token calculations\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"awardPoints(string[])\":{\"notice\":\"award a lead MVO (3 points) and committee MVOs (1 point each) for each processed transaction, only callable by the protocol contract\"},\"checkMVO(string)\":{\"notice\":\"check an MVO's struct and ensure it has at least 'minStake' tokens and is active\"},\"checkMVOSig(string,bytes,bytes32)\":{\"notice\":\"check an MVO's signature against its ID and verify signature - will revert if not\"},\"claim(string)\":{\"notice\":\"for an MVO to claim their mint reward. Amount of reward is based on the ratio of msg.sender's 'pointsBalance[]' compared to 'totalPoints' at the time of claim, minus any pool dues\"},\"codeHash()\":{\"notice\":\"hash of off-chain codebase (i.e. MVO/Auditor node) location, or codebase in its entirety, for user verification. Provided by admin.\"},\"createMVOPool(uint256,uint256,string)\":{\"notice\":\"for an MVO to create an MVO pool -- msg.sender will be 'poolAddress'. Cannot be altered after creation; only option is to delete pool and start another with a new 'miningPoolId'\"},\"deleteMVOPool(uint256,string)\":{\"notice\":\"for an MVO pool creator to delete their pool\"},\"enshroudProtocols(uint256)\":{\"notice\":\"Enshroud protocol addresses (to support V1, V2, etc.)\"},\"enshroudToken()\":{\"notice\":\"$ENSHROUD token contract address, immutable\"},\"genesisBlock()\":{\"notice\":\"block starting point for epoch calculations\"},\"idToMVO(string)\":{\"notice\":\"maps an MVO's mvoId to corresponding MVO struct\"},\"idToMVOPool(uint256)\":{\"notice\":\"maps an MVOPoolId to its corresponding MVOPool struct\"},\"importPoints(uint256,string[],uint256[])\":{\"notice\":\"this method is only relevant on Eth mainnet, callable by bot\"},\"minStake()\":{\"notice\":\"minimum amount of stake required for an active MVO\"},\"mvoIds(uint256)\":{\"notice\":\"for the MVO selection algorithm\"},\"mvoIdsIndex(string)\":{\"notice\":\"maps an mvoId to its index number ('mvoIndex') in the 'mvoIds' array\"},\"mvoIndex()\":{\"notice\":\"counter for 'mvoIds' array index via 'mvoIdsIndex' mapping\"},\"pointsBalance(address)\":{\"notice\":\"MVO staking address mapped to current points balance\"},\"protoIndex()\":{\"notice\":\"counter for enshroudProtocols array, set to index of latest deployed Enshroud protocol\"},\"stake(string,uint256)\":{\"notice\":\"for an MVO to stake their tokens; must first approve address(this) for '_amount'\"},\"stakeTimelock(string,uint256,address,uint128,uint128)\":{\"notice\":\"for the 'timelockManager' (by user calling 'withdrawTimelockToMVOStaking()' in TimelockManager contract) to stake $ENSHROUD tokens in this address on behalf of the timelock beneficiary ('_staker'), who is an MVO operator.\"},\"stakeWithPermit(string,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"for an MVO to stake their tokens in this address using permit()\"},\"timelockManager()\":{\"notice\":\"TimelockManager contract address\"},\"timelocks(address)\":{\"notice\":\"maps a timelock beneficiary address to their Timelock struct\"},\"totalPoints()\":{\"notice\":\"total amount of awarded points outstanding, used to calculate relative pointsBalance for a given MVO when claiming reward mint\"},\"totalStake()\":{\"notice\":\"total amount of staked tokens, used to calculate relative staking amount for a given MVO in selection mechanism\"},\"updateCodeHash(bytes32)\":{\"notice\":\"update 'codeHash', designating a new hash of the off-chain codebase storage location reference or entire codebase, for user verification\"},\"updateMVOPoolMembership(uint256,string)\":{\"notice\":\"for an MVO to join an existing MVO mining pool, change pool membership, or leave a pool\"},\"updateMinStake(uint256)\":{\"notice\":\"update 'minStake', designating a new minimum stake amount of $ENSHROUD tokens for MVOs, after three admins have called\"},\"updateMvoStatus(string,(string,address,address,string,uint256,uint120,uint120,bool))\":{\"notice\":\"for a single admin to designate, update, or revoke an MVO's config struct using its ID\"},\"updatePointsBot(address)\":{\"notice\":\"set or update 'pointsBot' a new bot address authorized to import MVO points awarded on other chains (relevant only on mainnet contract deployment)\"},\"updateProtocol(address)\":{\"notice\":\"update 'enshroudProtocol' a new protocol address, such as for a v2 upgrade, after three admins have called\"},\"withdraw(string,uint256)\":{\"notice\":\"for an MVO to withdraw its staked $ENSHROUD tokens\"},\"yearToTokensRemaining(uint256)\":{\"notice\":\"maps year to the amount of MVO incentive tokens remaining for reward mint in such year\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/MVOStaking.sol\":\"MVOStaking\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/MVOStaking.sol\":{\"keccak256\":\"0x31daad17c94ba367cebf9554d0ed55e13b550c6286a0dc46e36ed22ab23db2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7d6081bd209a4688cc269f643f4d47993d2245b5263ec7255e7aaee5b9abce5\",\"dweb:/ipfs/Qmf3BAmFawPPivdRn534VGrhejVQbyVJhP3bbGnKfTn3SK\"]},\"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, 29966 characters]",
  "deployedBytecode": "[encoded data, 28516 characters]",
  "immutableReferences": {
    "102": [
      {
        "length": 32,
        "start": 1132
      },
      {
        "length": 32,
        "start": 1856
      },
      {
        "length": 32,
        "start": 2550
      },
      {
        "length": 32,
        "start": 6295
      },
      {
        "length": 32,
        "start": 8245
      }
    ],
    "105": [
      {
        "length": 32,
        "start": 862
      },
      {
        "length": 32,
        "start": 8624
      }
    ],
    "109": [
      {
        "length": 32,
        "start": 1748
      },
      {
        "length": 32,
        "start": 9158
      },
      {
        "length": 32,
        "start": 9355
      }
    ],
    "112": [
      {
        "length": 32,
        "start": 1349
      },
      {
        "length": 32,
        "start": 7775
      }
    ]
  },
  "generatedSources": [
    {
      "ast": {
        "nativeSrc": "0:908:3",
        "nodeType": "YulBlock",
        "src": "0:908:3",
        "statements": [
          {
            "nativeSrc": "6:3:3",
            "nodeType": "YulBlock",
            "src": "6:3:3",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "74:117:3",
              "nodeType": "YulBlock",
              "src": "74:117:3",
              "statements": [
                {
                  "nativeSrc": "84:22:3",
                  "nodeType": "YulAssignment",
                  "src": "84:22:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "99:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "99:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "93:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "93:5:3"
                    },
                    "nativeSrc": "93:13:3",
                    "nodeType": "YulFunctionCall",
                    "src": "93:13:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "84:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "84:5:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "169:16:3",
                    "nodeType": "YulBlock",
                    "src": "169:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "178:1:3",
                              "nodeType": "YulLiteral",
                              "src": "178:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "181:1:3",
                              "nodeType": "YulLiteral",
                              "src": "181:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "171:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "171:6:3"
                          },
                          "nativeSrc": "171:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "171:12:3"
                        },
                        "nativeSrc": "171:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "171:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "128:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "128:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "139:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "139:5:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "154:3:3",
                                        "nodeType": "YulLiteral",
                                        "src": "154:3:3",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "159:1:3",
                                        "nodeType": "YulLiteral",
                                        "src": "159:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "150:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "150:3:3"
                                    },
                                    "nativeSrc": "150:11:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "150:11:3"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "163:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "163:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "146:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "146:3:3"
                                },
                                "nativeSrc": "146:19:3",
                                "nodeType": "YulFunctionCall",
                                "src": "146:19:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "135:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "135:3:3"
                            },
                            "nativeSrc": "135:31:3",
                            "nodeType": "YulFunctionCall",
                            "src": "135:31:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "125:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "125:2:3"
                        },
                        "nativeSrc": "125:42:3",
                        "nodeType": "YulFunctionCall",
                        "src": "125:42:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "118:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "118:6:3"
                    },
                    "nativeSrc": "118:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "118:50:3"
                  },
                  "nativeSrc": "115:70:3",
                  "nodeType": "YulIf",
                  "src": "115:70:3"
                }
              ]
            },
            "name": "abi_decode_address_fromMemory",
            "nativeSrc": "14:177:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "53:6:3",
                "nodeType": "YulTypedName",
                "src": "53:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "64:5:3",
                "nodeType": "YulTypedName",
                "src": "64:5:3",
                "type": ""
              }
            ],
            "src": "14:177:3"
          },
          {
            "body": {
              "nativeSrc": "328:308:3",
              "nodeType": "YulBlock",
              "src": "328:308:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "375:16:3",
                    "nodeType": "YulBlock",
                    "src": "375:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "384:1:3",
                              "nodeType": "YulLiteral",
                              "src": "384:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "387:1:3",
                              "nodeType": "YulLiteral",
                              "src": "387:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "377:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "377:6:3"
                          },
                          "nativeSrc": "377:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "377:12:3"
                        },
                        "nativeSrc": "377:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "377:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "349:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "349:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "358:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "358:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "345:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "345:3:3"
                        },
                        "nativeSrc": "345:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "345:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "370:3:3",
                        "nodeType": "YulLiteral",
                        "src": "370:3:3",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "341:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "341:3:3"
                    },
                    "nativeSrc": "341:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "341:33:3"
                  },
                  "nativeSrc": "338:53:3",
                  "nodeType": "YulIf",
                  "src": "338:53:3"
                },
                {
                  "nativeSrc": "400:50:3",
                  "nodeType": "YulAssignment",
                  "src": "400:50:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "440:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "440:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nativeSrc": "410:29:3",
                      "nodeType": "YulIdentifier",
                      "src": "410:29:3"
                    },
                    "nativeSrc": "410:40:3",
                    "nodeType": "YulFunctionCall",
                    "src": "410:40:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "400:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "400:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "459:59:3",
                  "nodeType": "YulAssignment",
                  "src": "459:59:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "503:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "503:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "514:2:3",
                            "nodeType": "YulLiteral",
                            "src": "514:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "499:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "499:3:3"
                        },
                        "nativeSrc": "499:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "499:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nativeSrc": "469:29:3",
                      "nodeType": "YulIdentifier",
                      "src": "469:29:3"
                    },
                    "nativeSrc": "469:49:3",
                    "nodeType": "YulFunctionCall",
                    "src": "469:49:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "459:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "459:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "527:59:3",
                  "nodeType": "YulAssignment",
                  "src": "527:59:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "571:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "571:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "582:2:3",
                            "nodeType": "YulLiteral",
                            "src": "582:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "567:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "567:3:3"
                        },
                        "nativeSrc": "567:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "567:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nativeSrc": "537:29:3",
                      "nodeType": "YulIdentifier",
                      "src": "537:29:3"
                    },
                    "nativeSrc": "537:49:3",
                    "nodeType": "YulFunctionCall",
                    "src": "537:49:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "527:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "527:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "595:35:3",
                  "nodeType": "YulAssignment",
                  "src": "595:35:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "615:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "615:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "626:2:3",
                            "nodeType": "YulLiteral",
                            "src": "626:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "611:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "611:3:3"
                        },
                        "nativeSrc": "611:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "611:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "605:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "605:5:3"
                    },
                    "nativeSrc": "605:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "605:25:3"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "595:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "595:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256_fromMemory",
            "nativeSrc": "196:440:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "270:9:3",
                "nodeType": "YulTypedName",
                "src": "270:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "281:7:3",
                "nodeType": "YulTypedName",
                "src": "281:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "293:6:3",
                "nodeType": "YulTypedName",
                "src": "293:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "301:6:3",
                "nodeType": "YulTypedName",
                "src": "301:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "309:6:3",
                "nodeType": "YulTypedName",
                "src": "309:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "317:6:3",
                "nodeType": "YulTypedName",
                "src": "317:6:3",
                "type": ""
              }
            ],
            "src": "196:440:3"
          },
          {
            "body": {
              "nativeSrc": "693:213:3",
              "nodeType": "YulBlock",
              "src": "693:213:3",
              "statements": [
                {
                  "nativeSrc": "703:20:3",
                  "nodeType": "YulAssignment",
                  "src": "703:20:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "718:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "718:1:3"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "721:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "721:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "714:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "714:3:3"
                    },
                    "nativeSrc": "714:9:3",
                    "nodeType": "YulFunctionCall",
                    "src": "714:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nativeSrc": "703:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "703:7:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "789:111:3",
                    "nodeType": "YulBlock",
                    "src": "789:111:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "810:1:3",
                              "nodeType": "YulLiteral",
                              "src": "810:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "817:3:3",
                                  "nodeType": "YulLiteral",
                                  "src": "817:3:3",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "822:10:3",
                                  "nodeType": "YulLiteral",
                                  "src": "822:10:3",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "813:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "813:3:3"
                              },
                              "nativeSrc": "813:20:3",
                              "nodeType": "YulFunctionCall",
                              "src": "813:20:3"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "803:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "803:6:3"
                          },
                          "nativeSrc": "803:31:3",
                          "nodeType": "YulFunctionCall",
                          "src": "803:31:3"
                        },
                        "nativeSrc": "803:31:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "803:31:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "854:1:3",
                              "nodeType": "YulLiteral",
                              "src": "854:1:3",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "857:4:3",
                              "nodeType": "YulLiteral",
                              "src": "857:4:3",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "847:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "847:6:3"
                          },
                          "nativeSrc": "847:15:3",
                          "nodeType": "YulFunctionCall",
                          "src": "847:15:3"
                        },
                        "nativeSrc": "847:15:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "847:15:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "882:1:3",
                              "nodeType": "YulLiteral",
                              "src": "882:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "885:4:3",
                              "nodeType": "YulLiteral",
                              "src": "885:4:3",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "875:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "875:6:3"
                          },
                          "nativeSrc": "875:15:3",
                          "nodeType": "YulFunctionCall",
                          "src": "875:15:3"
                        },
                        "nativeSrc": "875:15:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "875:15:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "752:1:3",
                                "nodeType": "YulIdentifier",
                                "src": "752:1:3"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "745:6:3",
                              "nodeType": "YulIdentifier",
                              "src": "745:6:3"
                            },
                            "nativeSrc": "745:9:3",
                            "nodeType": "YulFunctionCall",
                            "src": "745:9:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "y",
                                "nativeSrc": "759:1:3",
                                "nodeType": "YulIdentifier",
                                "src": "759:1:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "product",
                                    "nativeSrc": "766:7:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "766:7:3"
                                  },
                                  {
                                    "name": "x",
                                    "nativeSrc": "775:1:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "775:1:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "762:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "762:3:3"
                                },
                                "nativeSrc": "762:15:3",
                                "nodeType": "YulFunctionCall",
                                "src": "762:15:3"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nativeSrc": "756:2:3",
                              "nodeType": "YulIdentifier",
                              "src": "756:2:3"
                            },
                            "nativeSrc": "756:22:3",
                            "nodeType": "YulFunctionCall",
                            "src": "756:22:3"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "742:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "742:2:3"
                        },
                        "nativeSrc": "742:37:3",
                        "nodeType": "YulFunctionCall",
                        "src": "742:37:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "735:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "735:6:3"
                    },
                    "nativeSrc": "735:45:3",
                    "nodeType": "YulFunctionCall",
                    "src": "735:45:3"
                  },
                  "nativeSrc": "732:168:3",
                  "nodeType": "YulIf",
                  "src": "732:168:3"
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nativeSrc": "641:265:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "672:1:3",
                "nodeType": "YulTypedName",
                "src": "672:1:3",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "675:1:3",
                "nodeType": "YulTypedName",
                "src": "675:1:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nativeSrc": "681:7:3",
                "nodeType": "YulTypedName",
                "src": "681:7:3",
                "type": ""
              }
            ],
            "src": "641:265:3"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x))))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}",
      "id": 3,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:28292:3",
        "nodeType": "YulBlock",
        "src": "0:28292:3",
        "statements": [
          {
            "nativeSrc": "6:3:3",
            "nodeType": "YulBlock",
            "src": "6:3:3",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "59:86:3",
              "nodeType": "YulBlock",
              "src": "59:86:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "123:16:3",
                    "nodeType": "YulBlock",
                    "src": "123:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "132:1:3",
                              "nodeType": "YulLiteral",
                              "src": "132:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "135:1:3",
                              "nodeType": "YulLiteral",
                              "src": "135:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "125:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "125:6:3"
                          },
                          "nativeSrc": "125:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "125:12:3"
                        },
                        "nativeSrc": "125:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "125:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "82:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "82:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "93:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "93:5:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "108:3:3",
                                        "nodeType": "YulLiteral",
                                        "src": "108:3:3",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "113:1:3",
                                        "nodeType": "YulLiteral",
                                        "src": "113:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "104:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "104:3:3"
                                    },
                                    "nativeSrc": "104:11:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "104:11:3"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "117:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "117:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "100:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "100:3:3"
                                },
                                "nativeSrc": "100:19:3",
                                "nodeType": "YulFunctionCall",
                                "src": "100:19:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "89:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "89:3:3"
                            },
                            "nativeSrc": "89:31:3",
                            "nodeType": "YulFunctionCall",
                            "src": "89:31:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "79:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "79:2:3"
                        },
                        "nativeSrc": "79:42:3",
                        "nodeType": "YulFunctionCall",
                        "src": "79:42:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "72:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "72:6:3"
                    },
                    "nativeSrc": "72:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "72:50:3"
                  },
                  "nativeSrc": "69:70:3",
                  "nodeType": "YulIf",
                  "src": "69:70:3"
                }
              ]
            },
            "name": "validator_revert_address",
            "nativeSrc": "14:131:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "48:5:3",
                "nodeType": "YulTypedName",
                "src": "48:5:3",
                "type": ""
              }
            ],
            "src": "14:131:3"
          },
          {
            "body": {
              "nativeSrc": "199:85:3",
              "nodeType": "YulBlock",
              "src": "199:85:3",
              "statements": [
                {
                  "nativeSrc": "209:29:3",
                  "nodeType": "YulAssignment",
                  "src": "209:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "231:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "231:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "218:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "218:12:3"
                    },
                    "nativeSrc": "218:20:3",
                    "nodeType": "YulFunctionCall",
                    "src": "218:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "209:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "209:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "272:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "272:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "247:24:3",
                      "nodeType": "YulIdentifier",
                      "src": "247:24:3"
                    },
                    "nativeSrc": "247:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "247:31:3"
                  },
                  "nativeSrc": "247:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "247:31:3"
                }
              ]
            },
            "name": "abi_decode_address",
            "nativeSrc": "150:134:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "178:6:3",
                "nodeType": "YulTypedName",
                "src": "178:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "189:5:3",
                "nodeType": "YulTypedName",
                "src": "189:5:3",
                "type": ""
              }
            ],
            "src": "150:134:3"
          },
          {
            "body": {
              "nativeSrc": "359:177:3",
              "nodeType": "YulBlock",
              "src": "359:177:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "405:16:3",
                    "nodeType": "YulBlock",
                    "src": "405:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "414:1:3",
                              "nodeType": "YulLiteral",
                              "src": "414:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "417:1:3",
                              "nodeType": "YulLiteral",
                              "src": "417:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "407:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "407:6:3"
                          },
                          "nativeSrc": "407:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "407:12:3"
                        },
                        "nativeSrc": "407:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "407:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "380:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "380:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "389:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "389:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "376:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "376:3:3"
                        },
                        "nativeSrc": "376:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "376:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "401:2:3",
                        "nodeType": "YulLiteral",
                        "src": "401:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "372:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "372:3:3"
                    },
                    "nativeSrc": "372:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "372:32:3"
                  },
                  "nativeSrc": "369:52:3",
                  "nodeType": "YulIf",
                  "src": "369:52:3"
                },
                {
                  "nativeSrc": "430:36:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "430:36:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "456:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "456:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "443:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "443:12:3"
                    },
                    "nativeSrc": "443:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "443:23:3"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "434:5:3",
                      "nodeType": "YulTypedName",
                      "src": "434:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "500:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "500:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "475:24:3",
                      "nodeType": "YulIdentifier",
                      "src": "475:24:3"
                    },
                    "nativeSrc": "475:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "475:31:3"
                  },
                  "nativeSrc": "475:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "475:31:3"
                },
                {
                  "nativeSrc": "515:15:3",
                  "nodeType": "YulAssignment",
                  "src": "515:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "525:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "525:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "515:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "515:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nativeSrc": "289:247:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "325:9:3",
                "nodeType": "YulTypedName",
                "src": "325:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "336:7:3",
                "nodeType": "YulTypedName",
                "src": "336:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "348:6:3",
                "nodeType": "YulTypedName",
                "src": "348:6:3",
                "type": ""
              }
            ],
            "src": "289:247:3"
          },
          {
            "body": {
              "nativeSrc": "726:288:3",
              "nodeType": "YulBlock",
              "src": "726:288:3",
              "statements": [
                {
                  "nativeSrc": "736:27:3",
                  "nodeType": "YulAssignment",
                  "src": "736:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "748:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "748:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "759:3:3",
                        "nodeType": "YulLiteral",
                        "src": "759:3:3",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "744:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "744:3:3"
                    },
                    "nativeSrc": "744:19:3",
                    "nodeType": "YulFunctionCall",
                    "src": "744:19:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "736:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "736:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "779:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "779:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "790:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "790:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "772:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "772:6:3"
                    },
                    "nativeSrc": "772:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "772:25:3"
                  },
                  "nativeSrc": "772:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "772:25:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "817:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "817:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "828:2:3",
                            "nodeType": "YulLiteral",
                            "src": "828:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "813:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "813:3:3"
                        },
                        "nativeSrc": "813:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "813:18:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "833:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "833:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "806:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "806:6:3"
                    },
                    "nativeSrc": "806:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "806:34:3"
                  },
                  "nativeSrc": "806:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "806:34:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "860:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "860:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "871:2:3",
                            "nodeType": "YulLiteral",
                            "src": "871:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "856:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "856:3:3"
                        },
                        "nativeSrc": "856:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "856:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "880:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "880:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "888:34:3",
                            "nodeType": "YulLiteral",
                            "src": "888:34:3",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "876:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "876:3:3"
                        },
                        "nativeSrc": "876:47:3",
                        "nodeType": "YulFunctionCall",
                        "src": "876:47:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "849:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "849:6:3"
                    },
                    "nativeSrc": "849:75:3",
                    "nodeType": "YulFunctionCall",
                    "src": "849:75:3"
                  },
                  "nativeSrc": "849:75:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "849:75:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "944:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "944:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "955:2:3",
                            "nodeType": "YulLiteral",
                            "src": "955:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "940:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "940:3:3"
                        },
                        "nativeSrc": "940:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "940:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value3",
                            "nativeSrc": "964:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "964:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "972:34:3",
                            "nodeType": "YulLiteral",
                            "src": "972:34:3",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "960:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "960:3:3"
                        },
                        "nativeSrc": "960:47:3",
                        "nodeType": "YulFunctionCall",
                        "src": "960:47:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "933:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "933:6:3"
                    },
                    "nativeSrc": "933:75:3",
                    "nodeType": "YulFunctionCall",
                    "src": "933:75:3"
                  },
                  "nativeSrc": "933:75:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "933:75:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint128_t_uint128__to_t_uint256_t_uint256_t_uint128_t_uint128__fromStack_reversed",
            "nativeSrc": "541:473:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "671:9:3",
                "nodeType": "YulTypedName",
                "src": "671:9:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "682:6:3",
                "nodeType": "YulTypedName",
                "src": "682:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "690:6:3",
                "nodeType": "YulTypedName",
                "src": "690:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "698:6:3",
                "nodeType": "YulTypedName",
                "src": "698:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "706:6:3",
                "nodeType": "YulTypedName",
                "src": "706:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "717:4:3",
                "nodeType": "YulTypedName",
                "src": "717:4:3",
                "type": ""
              }
            ],
            "src": "541:473:3"
          },
          {
            "body": {
              "nativeSrc": "1092:275:3",
              "nodeType": "YulBlock",
              "src": "1092:275:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1141:16:3",
                    "nodeType": "YulBlock",
                    "src": "1141:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1150:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1150:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1153:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1153:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1143:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "1143:6:3"
                          },
                          "nativeSrc": "1143:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "1143:12:3"
                        },
                        "nativeSrc": "1143:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "1143:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1120:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "1120:6:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "1128:4:3",
                                "nodeType": "YulLiteral",
                                "src": "1128:4:3",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1116:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "1116:3:3"
                            },
                            "nativeSrc": "1116:17:3",
                            "nodeType": "YulFunctionCall",
                            "src": "1116:17:3"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "1135:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "1135:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "1112:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "1112:3:3"
                        },
                        "nativeSrc": "1112:27:3",
                        "nodeType": "YulFunctionCall",
                        "src": "1112:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "1105:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "1105:6:3"
                    },
                    "nativeSrc": "1105:35:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1105:35:3"
                  },
                  "nativeSrc": "1102:55:3",
                  "nodeType": "YulIf",
                  "src": "1102:55:3"
                },
                {
                  "nativeSrc": "1166:30:3",
                  "nodeType": "YulAssignment",
                  "src": "1166:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1189:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "1189:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1176:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "1176:12:3"
                    },
                    "nativeSrc": "1176:20:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1176:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "1166:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "1166:6:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1239:16:3",
                    "nodeType": "YulBlock",
                    "src": "1239:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1248:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1248:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1251:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1251:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1241:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "1241:6:3"
                          },
                          "nativeSrc": "1241:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "1241:12:3"
                        },
                        "nativeSrc": "1241:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "1241:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "1211:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "1211:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1219:18:3",
                        "nodeType": "YulLiteral",
                        "src": "1219:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1208:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "1208:2:3"
                    },
                    "nativeSrc": "1208:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1208:30:3"
                  },
                  "nativeSrc": "1205:50:3",
                  "nodeType": "YulIf",
                  "src": "1205:50:3"
                },
                {
                  "nativeSrc": "1264:29:3",
                  "nodeType": "YulAssignment",
                  "src": "1264:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1280:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "1280:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1288:4:3",
                        "nodeType": "YulLiteral",
                        "src": "1288:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1276:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "1276:3:3"
                    },
                    "nativeSrc": "1276:17:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1276:17:3"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nativeSrc": "1264:8:3",
                      "nodeType": "YulIdentifier",
                      "src": "1264:8:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1345:16:3",
                    "nodeType": "YulBlock",
                    "src": "1345:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1354:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1354:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1357:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1357:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1347:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "1347:6:3"
                          },
                          "nativeSrc": "1347:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "1347:12:3"
                        },
                        "nativeSrc": "1347:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "1347:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1316:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "1316:6:3"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1324:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "1324:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1312:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "1312:3:3"
                            },
                            "nativeSrc": "1312:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "1312:19:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1333:4:3",
                            "nodeType": "YulLiteral",
                            "src": "1333:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1308:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "1308:3:3"
                        },
                        "nativeSrc": "1308:30:3",
                        "nodeType": "YulFunctionCall",
                        "src": "1308:30:3"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1340:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "1340:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1305:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "1305:2:3"
                    },
                    "nativeSrc": "1305:39:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1305:39:3"
                  },
                  "nativeSrc": "1302:59:3",
                  "nodeType": "YulIf",
                  "src": "1302:59:3"
                }
              ]
            },
            "name": "abi_decode_string_calldata",
            "nativeSrc": "1019:348:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "1055:6:3",
                "nodeType": "YulTypedName",
                "src": "1055:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "1063:3:3",
                "nodeType": "YulTypedName",
                "src": "1063:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nativeSrc": "1071:8:3",
                "nodeType": "YulTypedName",
                "src": "1071:8:3",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "1081:6:3",
                "nodeType": "YulTypedName",
                "src": "1081:6:3",
                "type": ""
              }
            ],
            "src": "1019:348:3"
          },
          {
            "body": {
              "nativeSrc": "1545:880:3",
              "nodeType": "YulBlock",
              "src": "1545:880:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1592:16:3",
                    "nodeType": "YulBlock",
                    "src": "1592:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1601:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1601:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1604:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1604:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1594:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "1594:6:3"
                          },
                          "nativeSrc": "1594:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "1594:12:3"
                        },
                        "nativeSrc": "1594:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "1594:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1566:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "1566:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1575:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "1575:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1562:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "1562:3:3"
                        },
                        "nativeSrc": "1562:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "1562:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1587:3:3",
                        "nodeType": "YulLiteral",
                        "src": "1587:3:3",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1558:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "1558:3:3"
                    },
                    "nativeSrc": "1558:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1558:33:3"
                  },
                  "nativeSrc": "1555:53:3",
                  "nodeType": "YulIf",
                  "src": "1555:53:3"
                },
                {
                  "nativeSrc": "1617:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1617:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1644:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "1644:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1631:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "1631:12:3"
                    },
                    "nativeSrc": "1631:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1631:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "1621:6:3",
                      "nodeType": "YulTypedName",
                      "src": "1621:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1697:16:3",
                    "nodeType": "YulBlock",
                    "src": "1697:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1706:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1706:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1709:1:3",
                              "nodeType": "YulLiteral",
                              "src": "1709:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1699:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "1699:6:3"
                          },
                          "nativeSrc": "1699:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "1699:12:3"
                        },
                        "nativeSrc": "1699:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "1699:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1669:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "1669:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1677:18:3",
                        "nodeType": "YulLiteral",
                        "src": "1677:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1666:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "1666:2:3"
                    },
                    "nativeSrc": "1666:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1666:30:3"
                  },
                  "nativeSrc": "1663:50:3",
                  "nodeType": "YulIf",
                  "src": "1663:50:3"
                },
                {
                  "nativeSrc": "1722:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1722:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1779:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "1779:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1790:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "1790:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1775:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "1775:3:3"
                        },
                        "nativeSrc": "1775:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "1775:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1799:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "1799:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "1748:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "1748:26:3"
                    },
                    "nativeSrc": "1748:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1748:59:3"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "1726:8:3",
                      "nodeType": "YulTypedName",
                      "src": "1726:8:3",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "1736:8:3",
                      "nodeType": "YulTypedName",
                      "src": "1736:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1816:18:3",
                  "nodeType": "YulAssignment",
                  "src": "1816:18:3",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "1826:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "1826:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1816:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "1816:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "1843:18:3",
                  "nodeType": "YulAssignment",
                  "src": "1843:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "1853:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "1853:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1843:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "1843:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "1870:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1870:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1883:1:3",
                    "nodeType": "YulLiteral",
                    "src": "1883:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1874:5:3",
                      "nodeType": "YulTypedName",
                      "src": "1874:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1893:41:3",
                  "nodeType": "YulAssignment",
                  "src": "1893:41:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1919:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "1919:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1930:2:3",
                            "nodeType": "YulLiteral",
                            "src": "1930:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1915:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "1915:3:3"
                        },
                        "nativeSrc": "1915:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "1915:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1902:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "1902:12:3"
                    },
                    "nativeSrc": "1902:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "1902:32:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1893:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "1893:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "1943:15:3",
                  "nodeType": "YulAssignment",
                  "src": "1943:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1953:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "1953:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "1943:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "1943:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "1967:16:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1967:16:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1982:1:3",
                    "nodeType": "YulLiteral",
                    "src": "1982:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "1971:7:3",
                      "nodeType": "YulTypedName",
                      "src": "1971:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1992:43:3",
                  "nodeType": "YulAssignment",
                  "src": "1992:43:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2020:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "2020:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2031:2:3",
                            "nodeType": "YulLiteral",
                            "src": "2031:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2016:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "2016:3:3"
                        },
                        "nativeSrc": "2016:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "2016:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2003:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "2003:12:3"
                    },
                    "nativeSrc": "2003:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2003:32:3"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "1992:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "1992:7:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "2044:17:3",
                  "nodeType": "YulAssignment",
                  "src": "2044:17:3",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "2054:7:3",
                    "nodeType": "YulIdentifier",
                    "src": "2054:7:3"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "2044:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "2044:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "2070:47:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2070:47:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2102:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "2102:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2113:2:3",
                            "nodeType": "YulLiteral",
                            "src": "2113:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2098:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "2098:3:3"
                        },
                        "nativeSrc": "2098:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "2098:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2085:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "2085:12:3"
                    },
                    "nativeSrc": "2085:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2085:32:3"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "2074:7:3",
                      "nodeType": "YulTypedName",
                      "src": "2074:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2169:16:3",
                    "nodeType": "YulBlock",
                    "src": "2169:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2178:1:3",
                              "nodeType": "YulLiteral",
                              "src": "2178:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2181:1:3",
                              "nodeType": "YulLiteral",
                              "src": "2181:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2171:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "2171:6:3"
                          },
                          "nativeSrc": "2171:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "2171:12:3"
                        },
                        "nativeSrc": "2171:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "2171:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_2",
                            "nativeSrc": "2139:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "2139:7:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_2",
                                "nativeSrc": "2152:7:3",
                                "nodeType": "YulIdentifier",
                                "src": "2152:7:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "2161:4:3",
                                "nodeType": "YulLiteral",
                                "src": "2161:4:3",
                                "type": "",
                                "value": "0xff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "2148:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "2148:3:3"
                            },
                            "nativeSrc": "2148:18:3",
                            "nodeType": "YulFunctionCall",
                            "src": "2148:18:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "2136:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "2136:2:3"
                        },
                        "nativeSrc": "2136:31:3",
                        "nodeType": "YulFunctionCall",
                        "src": "2136:31:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "2129:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "2129:6:3"
                    },
                    "nativeSrc": "2129:39:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2129:39:3"
                  },
                  "nativeSrc": "2126:59:3",
                  "nodeType": "YulIf",
                  "src": "2126:59:3"
                },
                {
                  "nativeSrc": "2194:17:3",
                  "nodeType": "YulAssignment",
                  "src": "2194:17:3",
                  "value": {
                    "name": "value_2",
                    "nativeSrc": "2204:7:3",
                    "nodeType": "YulIdentifier",
                    "src": "2204:7:3"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "2194:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "2194:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "2220:16:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2220:16:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "2235:1:3",
                    "nodeType": "YulLiteral",
                    "src": "2235:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_3",
                      "nativeSrc": "2224:7:3",
                      "nodeType": "YulTypedName",
                      "src": "2224:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "2245:44:3",
                  "nodeType": "YulAssignment",
                  "src": "2245:44:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2273:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "2273:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2284:3:3",
                            "nodeType": "YulLiteral",
                            "src": "2284:3:3",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2269:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "2269:3:3"
                        },
                        "nativeSrc": "2269:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "2269:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2256:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "2256:12:3"
                    },
                    "nativeSrc": "2256:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2256:33:3"
                  },
                  "variableNames": [
                    {
                      "name": "value_3",
                      "nativeSrc": "2245:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "2245:7:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "2298:17:3",
                  "nodeType": "YulAssignment",
                  "src": "2298:17:3",
                  "value": {
                    "name": "value_3",
                    "nativeSrc": "2308:7:3",
                    "nodeType": "YulIdentifier",
                    "src": "2308:7:3"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "2298:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "2298:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "2324:16:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2324:16:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "2339:1:3",
                    "nodeType": "YulLiteral",
                    "src": "2339:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_4",
                      "nativeSrc": "2328:7:3",
                      "nodeType": "YulTypedName",
                      "src": "2328:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "2349:44:3",
                  "nodeType": "YulAssignment",
                  "src": "2349:44:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2377:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "2377:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2388:3:3",
                            "nodeType": "YulLiteral",
                            "src": "2388:3:3",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2373:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "2373:3:3"
                        },
                        "nativeSrc": "2373:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "2373:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2360:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "2360:12:3"
                    },
                    "nativeSrc": "2360:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2360:33:3"
                  },
                  "variableNames": [
                    {
                      "name": "value_4",
                      "nativeSrc": "2349:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "2349:7:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "2402:17:3",
                  "nodeType": "YulAssignment",
                  "src": "2402:17:3",
                  "value": {
                    "name": "value_4",
                    "nativeSrc": "2412:7:3",
                    "nodeType": "YulIdentifier",
                    "src": "2412:7:3"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nativeSrc": "2402:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "2402:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256t_uint8t_bytes32t_bytes32",
            "nativeSrc": "1372:1053:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1463:9:3",
                "nodeType": "YulTypedName",
                "src": "1463:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1474:7:3",
                "nodeType": "YulTypedName",
                "src": "1474:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1486:6:3",
                "nodeType": "YulTypedName",
                "src": "1486:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1494:6:3",
                "nodeType": "YulTypedName",
                "src": "1494:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1502:6:3",
                "nodeType": "YulTypedName",
                "src": "1502:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "1510:6:3",
                "nodeType": "YulTypedName",
                "src": "1510:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "1518:6:3",
                "nodeType": "YulTypedName",
                "src": "1518:6:3",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "1526:6:3",
                "nodeType": "YulTypedName",
                "src": "1526:6:3",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "1534:6:3",
                "nodeType": "YulTypedName",
                "src": "1534:6:3",
                "type": ""
              }
            ],
            "src": "1372:1053:3"
          },
          {
            "body": {
              "nativeSrc": "2531:76:3",
              "nodeType": "YulBlock",
              "src": "2531:76:3",
              "statements": [
                {
                  "nativeSrc": "2541:26:3",
                  "nodeType": "YulAssignment",
                  "src": "2541:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2553:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "2553:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2564:2:3",
                        "nodeType": "YulLiteral",
                        "src": "2564:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2549:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "2549:3:3"
                    },
                    "nativeSrc": "2549:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2549:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2541:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "2541:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2583:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "2583:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "2594:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "2594:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2576:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "2576:6:3"
                    },
                    "nativeSrc": "2576:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2576:25:3"
                  },
                  "nativeSrc": "2576:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "2576:25:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nativeSrc": "2430:177:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2500:9:3",
                "nodeType": "YulTypedName",
                "src": "2500:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2511:6:3",
                "nodeType": "YulTypedName",
                "src": "2511:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2522:4:3",
                "nodeType": "YulTypedName",
                "src": "2522:4:3",
                "type": ""
              }
            ],
            "src": "2430:177:3"
          },
          {
            "body": {
              "nativeSrc": "2713:76:3",
              "nodeType": "YulBlock",
              "src": "2713:76:3",
              "statements": [
                {
                  "nativeSrc": "2723:26:3",
                  "nodeType": "YulAssignment",
                  "src": "2723:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2735:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "2735:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2746:2:3",
                        "nodeType": "YulLiteral",
                        "src": "2746:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2731:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "2731:3:3"
                    },
                    "nativeSrc": "2731:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2731:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2723:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "2723:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2765:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "2765:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "2776:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "2776:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2758:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "2758:6:3"
                    },
                    "nativeSrc": "2758:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2758:25:3"
                  },
                  "nativeSrc": "2758:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "2758:25:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nativeSrc": "2612:177:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2682:9:3",
                "nodeType": "YulTypedName",
                "src": "2682:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2693:6:3",
                "nodeType": "YulTypedName",
                "src": "2693:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2704:4:3",
                "nodeType": "YulTypedName",
                "src": "2704:4:3",
                "type": ""
              }
            ],
            "src": "2612:177:3"
          },
          {
            "body": {
              "nativeSrc": "2901:418:3",
              "nodeType": "YulBlock",
              "src": "2901:418:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2947:16:3",
                    "nodeType": "YulBlock",
                    "src": "2947:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2956:1:3",
                              "nodeType": "YulLiteral",
                              "src": "2956:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2959:1:3",
                              "nodeType": "YulLiteral",
                              "src": "2959:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2949:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "2949:6:3"
                          },
                          "nativeSrc": "2949:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "2949:12:3"
                        },
                        "nativeSrc": "2949:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "2949:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2922:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "2922:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2931:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "2931:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2918:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "2918:3:3"
                        },
                        "nativeSrc": "2918:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "2918:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2943:2:3",
                        "nodeType": "YulLiteral",
                        "src": "2943:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2914:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "2914:3:3"
                    },
                    "nativeSrc": "2914:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2914:32:3"
                  },
                  "nativeSrc": "2911:52:3",
                  "nodeType": "YulIf",
                  "src": "2911:52:3"
                },
                {
                  "nativeSrc": "2972:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2972:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2999:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "2999:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2986:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "2986:12:3"
                    },
                    "nativeSrc": "2986:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "2986:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2976:6:3",
                      "nodeType": "YulTypedName",
                      "src": "2976:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3052:16:3",
                    "nodeType": "YulBlock",
                    "src": "3052:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3061:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3061:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3064:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3064:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3054:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "3054:6:3"
                          },
                          "nativeSrc": "3054:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "3054:12:3"
                        },
                        "nativeSrc": "3054:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "3054:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "3024:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "3024:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3032:18:3",
                        "nodeType": "YulLiteral",
                        "src": "3032:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3021:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "3021:2:3"
                    },
                    "nativeSrc": "3021:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3021:30:3"
                  },
                  "nativeSrc": "3018:50:3",
                  "nodeType": "YulIf",
                  "src": "3018:50:3"
                },
                {
                  "nativeSrc": "3077:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3077:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3134:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "3134:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "3145:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "3145:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3130:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "3130:3:3"
                        },
                        "nativeSrc": "3130:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "3130:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "3154:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "3154:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "3103:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "3103:26:3"
                    },
                    "nativeSrc": "3103:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3103:59:3"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "3081:8:3",
                      "nodeType": "YulTypedName",
                      "src": "3081:8:3",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "3091:8:3",
                      "nodeType": "YulTypedName",
                      "src": "3091:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3171:18:3",
                  "nodeType": "YulAssignment",
                  "src": "3171:18:3",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "3181:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "3181:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "3171:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "3171:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "3198:18:3",
                  "nodeType": "YulAssignment",
                  "src": "3198:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "3208:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "3208:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "3198:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "3198:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "3225:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3225:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "3238:1:3",
                    "nodeType": "YulLiteral",
                    "src": "3238:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "3229:5:3",
                      "nodeType": "YulTypedName",
                      "src": "3229:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3248:41:3",
                  "nodeType": "YulAssignment",
                  "src": "3248:41:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3274:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "3274:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3285:2:3",
                            "nodeType": "YulLiteral",
                            "src": "3285:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3270:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "3270:3:3"
                        },
                        "nativeSrc": "3270:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "3270:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "3257:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "3257:12:3"
                    },
                    "nativeSrc": "3257:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3257:32:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "3248:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "3248:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "3298:15:3",
                  "nodeType": "YulAssignment",
                  "src": "3298:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "3308:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "3308:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "3298:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "3298:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256",
            "nativeSrc": "2794:525:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2851:9:3",
                "nodeType": "YulTypedName",
                "src": "2851:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2862:7:3",
                "nodeType": "YulTypedName",
                "src": "2862:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2874:6:3",
                "nodeType": "YulTypedName",
                "src": "2874:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "2882:6:3",
                "nodeType": "YulTypedName",
                "src": "2882:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "2890:6:3",
                "nodeType": "YulTypedName",
                "src": "2890:6:3",
                "type": ""
              }
            ],
            "src": "2794:525:3"
          },
          {
            "body": {
              "nativeSrc": "3356:95:3",
              "nodeType": "YulBlock",
              "src": "3356:95:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3373:1:3",
                        "nodeType": "YulLiteral",
                        "src": "3373:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "3380:3:3",
                            "nodeType": "YulLiteral",
                            "src": "3380:3:3",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3385:10:3",
                            "nodeType": "YulLiteral",
                            "src": "3385:10:3",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "3376:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "3376:3:3"
                        },
                        "nativeSrc": "3376:20:3",
                        "nodeType": "YulFunctionCall",
                        "src": "3376:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3366:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "3366:6:3"
                    },
                    "nativeSrc": "3366:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3366:31:3"
                  },
                  "nativeSrc": "3366:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "3366:31:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3413:1:3",
                        "nodeType": "YulLiteral",
                        "src": "3413:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3416:4:3",
                        "nodeType": "YulLiteral",
                        "src": "3416:4:3",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3406:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "3406:6:3"
                    },
                    "nativeSrc": "3406:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3406:15:3"
                  },
                  "nativeSrc": "3406:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "3406:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3437:1:3",
                        "nodeType": "YulLiteral",
                        "src": "3437:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3440:4:3",
                        "nodeType": "YulLiteral",
                        "src": "3440:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "3430:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "3430:6:3"
                    },
                    "nativeSrc": "3430:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3430:15:3"
                  },
                  "nativeSrc": "3430:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "3430:15:3"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "3324:127:3",
            "nodeType": "YulFunctionDefinition",
            "src": "3324:127:3"
          },
          {
            "body": {
              "nativeSrc": "3536:865:3",
              "nodeType": "YulBlock",
              "src": "3536:865:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3582:16:3",
                    "nodeType": "YulBlock",
                    "src": "3582:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3591:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3591:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3594:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3594:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3584:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "3584:6:3"
                          },
                          "nativeSrc": "3584:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "3584:12:3"
                        },
                        "nativeSrc": "3584:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "3584:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3557:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "3557:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "3566:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "3566:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3553:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "3553:3:3"
                        },
                        "nativeSrc": "3553:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "3553:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3578:2:3",
                        "nodeType": "YulLiteral",
                        "src": "3578:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "3549:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "3549:3:3"
                    },
                    "nativeSrc": "3549:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3549:32:3"
                  },
                  "nativeSrc": "3546:52:3",
                  "nodeType": "YulIf",
                  "src": "3546:52:3"
                },
                {
                  "nativeSrc": "3607:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3607:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3634:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "3634:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "3621:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "3621:12:3"
                    },
                    "nativeSrc": "3621:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3621:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "3611:6:3",
                      "nodeType": "YulTypedName",
                      "src": "3611:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3687:16:3",
                    "nodeType": "YulBlock",
                    "src": "3687:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3696:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3696:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3699:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3699:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3689:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "3689:6:3"
                          },
                          "nativeSrc": "3689:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "3689:12:3"
                        },
                        "nativeSrc": "3689:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "3689:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "3659:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "3659:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3667:18:3",
                        "nodeType": "YulLiteral",
                        "src": "3667:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3656:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "3656:2:3"
                    },
                    "nativeSrc": "3656:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3656:30:3"
                  },
                  "nativeSrc": "3653:50:3",
                  "nodeType": "YulIf",
                  "src": "3653:50:3"
                },
                {
                  "nativeSrc": "3712:32:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3712:32:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3726:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "3726:9:3"
                      },
                      {
                        "name": "offset",
                        "nativeSrc": "3737:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "3737:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3722:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "3722:3:3"
                    },
                    "nativeSrc": "3722:22:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3722:22:3"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "3716:2:3",
                      "nodeType": "YulTypedName",
                      "src": "3716:2:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3792:16:3",
                    "nodeType": "YulBlock",
                    "src": "3792:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3801:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3801:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3804:1:3",
                              "nodeType": "YulLiteral",
                              "src": "3804:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3794:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "3794:6:3"
                          },
                          "nativeSrc": "3794:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "3794:12:3"
                        },
                        "nativeSrc": "3794:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "3794:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "3771:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "3771:2:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3775:4:3",
                                "nodeType": "YulLiteral",
                                "src": "3775:4:3",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "3767:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "3767:3:3"
                            },
                            "nativeSrc": "3767:13:3",
                            "nodeType": "YulFunctionCall",
                            "src": "3767:13:3"
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3782:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "3782:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "3763:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "3763:3:3"
                        },
                        "nativeSrc": "3763:27:3",
                        "nodeType": "YulFunctionCall",
                        "src": "3763:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3756:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "3756:6:3"
                    },
                    "nativeSrc": "3756:35:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3756:35:3"
                  },
                  "nativeSrc": "3753:55:3",
                  "nodeType": "YulIf",
                  "src": "3753:55:3"
                },
                {
                  "nativeSrc": "3817:30:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3817:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "3844:2:3",
                        "nodeType": "YulIdentifier",
                        "src": "3844:2:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "3831:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "3831:12:3"
                    },
                    "nativeSrc": "3831:16:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3831:16:3"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "3821:6:3",
                      "nodeType": "YulTypedName",
                      "src": "3821:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3890:22:3",
                    "nodeType": "YulBlock",
                    "src": "3890:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "3892:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "3892:16:3"
                          },
                          "nativeSrc": "3892:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "3892:18:3"
                        },
                        "nativeSrc": "3892:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "3892:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "3862:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "3862:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3870:18:3",
                        "nodeType": "YulLiteral",
                        "src": "3870:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3859:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "3859:2:3"
                    },
                    "nativeSrc": "3859:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3859:30:3"
                  },
                  "nativeSrc": "3856:56:3",
                  "nodeType": "YulIf",
                  "src": "3856:56:3"
                },
                {
                  "nativeSrc": "3921:23:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3921:23:3",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3941:2:3",
                        "nodeType": "YulLiteral",
                        "src": "3941:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3935:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "3935:5:3"
                    },
                    "nativeSrc": "3935:9:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3935:9:3"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "3925:6:3",
                      "nodeType": "YulTypedName",
                      "src": "3925:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "3953:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3953:85:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "3975:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "3975:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "3999:6:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "3999:6:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4007:4:3",
                                        "nodeType": "YulLiteral",
                                        "src": "4007:4:3",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "3995:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "3995:3:3"
                                    },
                                    "nativeSrc": "3995:17:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3995:17:3"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4018:2:3",
                                        "nodeType": "YulLiteral",
                                        "src": "4018:2:3",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "4014:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "4014:3:3"
                                    },
                                    "nativeSrc": "4014:7:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4014:7:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "3991:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3991:3:3"
                                },
                                "nativeSrc": "3991:31:3",
                                "nodeType": "YulFunctionCall",
                                "src": "3991:31:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4024:2:3",
                                "nodeType": "YulLiteral",
                                "src": "4024:2:3",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "3987:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "3987:3:3"
                            },
                            "nativeSrc": "3987:40:3",
                            "nodeType": "YulFunctionCall",
                            "src": "3987:40:3"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4033:2:3",
                                "nodeType": "YulLiteral",
                                "src": "4033:2:3",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "4029:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "4029:3:3"
                            },
                            "nativeSrc": "4029:7:3",
                            "nodeType": "YulFunctionCall",
                            "src": "4029:7:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3983:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "3983:3:3"
                        },
                        "nativeSrc": "3983:54:3",
                        "nodeType": "YulFunctionCall",
                        "src": "3983:54:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3971:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "3971:3:3"
                    },
                    "nativeSrc": "3971:67:3",
                    "nodeType": "YulFunctionCall",
                    "src": "3971:67:3"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "3957:10:3",
                      "nodeType": "YulTypedName",
                      "src": "3957:10:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4113:22:3",
                    "nodeType": "YulBlock",
                    "src": "4113:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "4115:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "4115:16:3"
                          },
                          "nativeSrc": "4115:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "4115:18:3"
                        },
                        "nativeSrc": "4115:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "4115:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "4056:10:3",
                            "nodeType": "YulIdentifier",
                            "src": "4056:10:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4068:18:3",
                            "nodeType": "YulLiteral",
                            "src": "4068:18:3",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "4053:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "4053:2:3"
                        },
                        "nativeSrc": "4053:34:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4053:34:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "4092:10:3",
                            "nodeType": "YulIdentifier",
                            "src": "4092:10:3"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "4104:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "4104:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "4089:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "4089:2:3"
                        },
                        "nativeSrc": "4089:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4089:22:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "4050:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "4050:2:3"
                    },
                    "nativeSrc": "4050:62:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4050:62:3"
                  },
                  "nativeSrc": "4047:88:3",
                  "nodeType": "YulIf",
                  "src": "4047:88:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "4151:2:3",
                        "nodeType": "YulLiteral",
                        "src": "4151:2:3",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "4155:10:3",
                        "nodeType": "YulIdentifier",
                        "src": "4155:10:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4144:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "4144:6:3"
                    },
                    "nativeSrc": "4144:22:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4144:22:3"
                  },
                  "nativeSrc": "4144:22:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "4144:22:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "4182:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "4182:6:3"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "4190:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "4190:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4175:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "4175:6:3"
                    },
                    "nativeSrc": "4175:22:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4175:22:3"
                  },
                  "nativeSrc": "4175:22:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "4175:22:3"
                },
                {
                  "body": {
                    "nativeSrc": "4247:16:3",
                    "nodeType": "YulBlock",
                    "src": "4247:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4256:1:3",
                              "nodeType": "YulLiteral",
                              "src": "4256:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4259:1:3",
                              "nodeType": "YulLiteral",
                              "src": "4259:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4249:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "4249:6:3"
                          },
                          "nativeSrc": "4249:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "4249:12:3"
                        },
                        "nativeSrc": "4249:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "4249:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "4220:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "4220:2:3"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "4224:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "4224:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "4216:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "4216:3:3"
                            },
                            "nativeSrc": "4216:15:3",
                            "nodeType": "YulFunctionCall",
                            "src": "4216:15:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4233:2:3",
                            "nodeType": "YulLiteral",
                            "src": "4233:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4212:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "4212:3:3"
                        },
                        "nativeSrc": "4212:24:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4212:24:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "4238:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "4238:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "4209:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "4209:2:3"
                    },
                    "nativeSrc": "4209:37:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4209:37:3"
                  },
                  "nativeSrc": "4206:57:3",
                  "nodeType": "YulIf",
                  "src": "4206:57:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "4289:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "4289:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4297:2:3",
                            "nodeType": "YulLiteral",
                            "src": "4297:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4285:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "4285:3:3"
                        },
                        "nativeSrc": "4285:15:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4285:15:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nativeSrc": "4306:2:3",
                            "nodeType": "YulIdentifier",
                            "src": "4306:2:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4310:2:3",
                            "nodeType": "YulLiteral",
                            "src": "4310:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4302:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "4302:3:3"
                        },
                        "nativeSrc": "4302:11:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4302:11:3"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "4315:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "4315:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "4272:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "4272:12:3"
                    },
                    "nativeSrc": "4272:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4272:50:3"
                  },
                  "nativeSrc": "4272:50:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "4272:50:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nativeSrc": "4346:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "4346:6:3"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "4354:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "4354:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "4342:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "4342:3:3"
                            },
                            "nativeSrc": "4342:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "4342:19:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4363:2:3",
                            "nodeType": "YulLiteral",
                            "src": "4363:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4338:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "4338:3:3"
                        },
                        "nativeSrc": "4338:28:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4338:28:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4368:1:3",
                        "nodeType": "YulLiteral",
                        "src": "4368:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4331:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "4331:6:3"
                    },
                    "nativeSrc": "4331:39:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4331:39:3"
                  },
                  "nativeSrc": "4331:39:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "4331:39:3"
                },
                {
                  "nativeSrc": "4379:16:3",
                  "nodeType": "YulAssignment",
                  "src": "4379:16:3",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "4389:6:3",
                    "nodeType": "YulIdentifier",
                    "src": "4389:6:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "4379:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "4379:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptr",
            "nativeSrc": "3456:945:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3502:9:3",
                "nodeType": "YulTypedName",
                "src": "3502:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "3513:7:3",
                "nodeType": "YulTypedName",
                "src": "3513:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "3525:6:3",
                "nodeType": "YulTypedName",
                "src": "3525:6:3",
                "type": ""
              }
            ],
            "src": "3456:945:3"
          },
          {
            "body": {
              "nativeSrc": "4476:156:3",
              "nodeType": "YulBlock",
              "src": "4476:156:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "4522:16:3",
                    "nodeType": "YulBlock",
                    "src": "4522:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4531:1:3",
                              "nodeType": "YulLiteral",
                              "src": "4531:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4534:1:3",
                              "nodeType": "YulLiteral",
                              "src": "4534:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4524:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "4524:6:3"
                          },
                          "nativeSrc": "4524:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "4524:12:3"
                        },
                        "nativeSrc": "4524:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "4524:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "4497:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "4497:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "4506:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "4506:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "4493:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "4493:3:3"
                        },
                        "nativeSrc": "4493:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4493:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4518:2:3",
                        "nodeType": "YulLiteral",
                        "src": "4518:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "4489:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "4489:3:3"
                    },
                    "nativeSrc": "4489:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4489:32:3"
                  },
                  "nativeSrc": "4486:52:3",
                  "nodeType": "YulIf",
                  "src": "4486:52:3"
                },
                {
                  "nativeSrc": "4547:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4547:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "4560:1:3",
                    "nodeType": "YulLiteral",
                    "src": "4560:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "4551:5:3",
                      "nodeType": "YulTypedName",
                      "src": "4551:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "4570:32:3",
                  "nodeType": "YulAssignment",
                  "src": "4570:32:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4592:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "4592:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "4579:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "4579:12:3"
                    },
                    "nativeSrc": "4579:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4579:23:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "4570:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "4570:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "4611:15:3",
                  "nodeType": "YulAssignment",
                  "src": "4611:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "4621:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "4621:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "4611:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "4611:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nativeSrc": "4406:226:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4442:9:3",
                "nodeType": "YulTypedName",
                "src": "4442:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "4453:7:3",
                "nodeType": "YulTypedName",
                "src": "4453:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "4465:6:3",
                "nodeType": "YulTypedName",
                "src": "4465:6:3",
                "type": ""
              }
            ],
            "src": "4406:226:3"
          },
          {
            "body": {
              "nativeSrc": "4761:521:3",
              "nodeType": "YulBlock",
              "src": "4761:521:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "4807:16:3",
                    "nodeType": "YulBlock",
                    "src": "4807:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4816:1:3",
                              "nodeType": "YulLiteral",
                              "src": "4816:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4819:1:3",
                              "nodeType": "YulLiteral",
                              "src": "4819:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "4809:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "4809:6:3"
                          },
                          "nativeSrc": "4809:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "4809:12:3"
                        },
                        "nativeSrc": "4809:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "4809:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "4782:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "4782:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "4791:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "4791:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "4778:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "4778:3:3"
                        },
                        "nativeSrc": "4778:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4778:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4803:2:3",
                        "nodeType": "YulLiteral",
                        "src": "4803:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "4774:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "4774:3:3"
                    },
                    "nativeSrc": "4774:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4774:32:3"
                  },
                  "nativeSrc": "4771:52:3",
                  "nodeType": "YulIf",
                  "src": "4771:52:3"
                },
                {
                  "nativeSrc": "4832:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4832:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "4845:1:3",
                    "nodeType": "YulLiteral",
                    "src": "4845:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "4836:5:3",
                      "nodeType": "YulTypedName",
                      "src": "4836:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "4855:32:3",
                  "nodeType": "YulAssignment",
                  "src": "4855:32:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4877:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "4877:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "4864:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "4864:12:3"
                    },
                    "nativeSrc": "4864:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4864:23:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "4855:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "4855:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "4896:15:3",
                  "nodeType": "YulAssignment",
                  "src": "4896:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "4906:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "4906:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "4896:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "4896:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "4920:16:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "4920:16:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "4935:1:3",
                    "nodeType": "YulLiteral",
                    "src": "4935:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "4924:7:3",
                      "nodeType": "YulTypedName",
                      "src": "4924:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "4945:43:3",
                  "nodeType": "YulAssignment",
                  "src": "4945:43:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4973:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "4973:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4984:2:3",
                            "nodeType": "YulLiteral",
                            "src": "4984:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4969:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "4969:3:3"
                        },
                        "nativeSrc": "4969:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "4969:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "4956:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "4956:12:3"
                    },
                    "nativeSrc": "4956:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "4956:32:3"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "4945:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "4945:7:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "4997:17:3",
                  "nodeType": "YulAssignment",
                  "src": "4997:17:3",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "5007:7:3",
                    "nodeType": "YulIdentifier",
                    "src": "5007:7:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "4997:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "4997:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "5023:46:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5023:46:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5054:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "5054:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5065:2:3",
                            "nodeType": "YulLiteral",
                            "src": "5065:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5050:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "5050:3:3"
                        },
                        "nativeSrc": "5050:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "5050:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5037:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "5037:12:3"
                    },
                    "nativeSrc": "5037:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5037:32:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "5027:6:3",
                      "nodeType": "YulTypedName",
                      "src": "5027:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "5112:16:3",
                    "nodeType": "YulBlock",
                    "src": "5112:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5121:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5121:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5124:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5124:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5114:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "5114:6:3"
                          },
                          "nativeSrc": "5114:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "5114:12:3"
                        },
                        "nativeSrc": "5114:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "5114:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "5084:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "5084:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5092:18:3",
                        "nodeType": "YulLiteral",
                        "src": "5092:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "5081:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "5081:2:3"
                    },
                    "nativeSrc": "5081:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5081:30:3"
                  },
                  "nativeSrc": "5078:50:3",
                  "nodeType": "YulIf",
                  "src": "5078:50:3"
                },
                {
                  "nativeSrc": "5137:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5137:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5194:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "5194:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "5205:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "5205:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5190:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "5190:3:3"
                        },
                        "nativeSrc": "5190:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "5190:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "5214:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "5214:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "5163:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "5163:26:3"
                    },
                    "nativeSrc": "5163:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5163:59:3"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nativeSrc": "5141:8:3",
                      "nodeType": "YulTypedName",
                      "src": "5141:8:3",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nativeSrc": "5151:8:3",
                      "nodeType": "YulTypedName",
                      "src": "5151:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "5231:18:3",
                  "nodeType": "YulAssignment",
                  "src": "5231:18:3",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "5241:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "5241:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "5231:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "5231:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "5258:18:3",
                  "nodeType": "YulAssignment",
                  "src": "5258:18:3",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "5268:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "5268:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "5258:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "5258:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint256t_string_calldata_ptr",
            "nativeSrc": "4637:645:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4703:9:3",
                "nodeType": "YulTypedName",
                "src": "4703:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "4714:7:3",
                "nodeType": "YulTypedName",
                "src": "4714:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "4726:6:3",
                "nodeType": "YulTypedName",
                "src": "4726:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4734:6:3",
                "nodeType": "YulTypedName",
                "src": "4734:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4742:6:3",
                "nodeType": "YulTypedName",
                "src": "4742:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "4750:6:3",
                "nodeType": "YulTypedName",
                "src": "4750:6:3",
                "type": ""
              }
            ],
            "src": "4637:645:3"
          },
          {
            "body": {
              "nativeSrc": "5379:283:3",
              "nodeType": "YulBlock",
              "src": "5379:283:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "5428:16:3",
                    "nodeType": "YulBlock",
                    "src": "5428:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5437:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5437:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5440:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5440:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5430:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "5430:6:3"
                          },
                          "nativeSrc": "5430:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "5430:12:3"
                        },
                        "nativeSrc": "5430:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "5430:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "5407:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "5407:6:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "5415:4:3",
                                "nodeType": "YulLiteral",
                                "src": "5415:4:3",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "5403:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "5403:3:3"
                            },
                            "nativeSrc": "5403:17:3",
                            "nodeType": "YulFunctionCall",
                            "src": "5403:17:3"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "5422:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "5422:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "5399:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "5399:3:3"
                        },
                        "nativeSrc": "5399:27:3",
                        "nodeType": "YulFunctionCall",
                        "src": "5399:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "5392:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "5392:6:3"
                    },
                    "nativeSrc": "5392:35:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5392:35:3"
                  },
                  "nativeSrc": "5389:55:3",
                  "nodeType": "YulIf",
                  "src": "5389:55:3"
                },
                {
                  "nativeSrc": "5453:30:3",
                  "nodeType": "YulAssignment",
                  "src": "5453:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "5476:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "5476:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5463:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "5463:12:3"
                    },
                    "nativeSrc": "5463:20:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5463:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "5453:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "5453:6:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "5526:16:3",
                    "nodeType": "YulBlock",
                    "src": "5526:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5535:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5535:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5538:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5538:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5528:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "5528:6:3"
                          },
                          "nativeSrc": "5528:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "5528:12:3"
                        },
                        "nativeSrc": "5528:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "5528:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "5498:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "5498:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5506:18:3",
                        "nodeType": "YulLiteral",
                        "src": "5506:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "5495:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "5495:2:3"
                    },
                    "nativeSrc": "5495:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5495:30:3"
                  },
                  "nativeSrc": "5492:50:3",
                  "nodeType": "YulIf",
                  "src": "5492:50:3"
                },
                {
                  "nativeSrc": "5551:29:3",
                  "nodeType": "YulAssignment",
                  "src": "5551:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "5567:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "5567:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5575:4:3",
                        "nodeType": "YulLiteral",
                        "src": "5575:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5563:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "5563:3:3"
                    },
                    "nativeSrc": "5563:17:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5563:17:3"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nativeSrc": "5551:8:3",
                      "nodeType": "YulIdentifier",
                      "src": "5551:8:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "5640:16:3",
                    "nodeType": "YulBlock",
                    "src": "5640:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5649:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5649:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5652:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5652:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5642:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "5642:6:3"
                          },
                          "nativeSrc": "5642:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "5642:12:3"
                        },
                        "nativeSrc": "5642:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "5642:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "5603:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "5603:6:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5615:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "5615:1:3",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nativeSrc": "5618:6:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5618:6:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "5611:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5611:3:3"
                                },
                                "nativeSrc": "5611:14:3",
                                "nodeType": "YulFunctionCall",
                                "src": "5611:14:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "5599:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "5599:3:3"
                            },
                            "nativeSrc": "5599:27:3",
                            "nodeType": "YulFunctionCall",
                            "src": "5599:27:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5628:4:3",
                            "nodeType": "YulLiteral",
                            "src": "5628:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5595:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "5595:3:3"
                        },
                        "nativeSrc": "5595:38:3",
                        "nodeType": "YulFunctionCall",
                        "src": "5595:38:3"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "5635:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "5635:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "5592:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "5592:2:3"
                    },
                    "nativeSrc": "5592:47:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5592:47:3"
                  },
                  "nativeSrc": "5589:67:3",
                  "nodeType": "YulIf",
                  "src": "5589:67:3"
                }
              ]
            },
            "name": "abi_decode_array_string_calldata_dyn_calldata",
            "nativeSrc": "5287:375:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "5342:6:3",
                "nodeType": "YulTypedName",
                "src": "5342:6:3",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "5350:3:3",
                "nodeType": "YulTypedName",
                "src": "5350:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nativeSrc": "5358:8:3",
                "nodeType": "YulTypedName",
                "src": "5358:8:3",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "5368:6:3",
                "nodeType": "YulTypedName",
                "src": "5368:6:3",
                "type": ""
              }
            ],
            "src": "5287:375:3"
          },
          {
            "body": {
              "nativeSrc": "5853:724:3",
              "nodeType": "YulBlock",
              "src": "5853:724:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "5899:16:3",
                    "nodeType": "YulBlock",
                    "src": "5899:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "5908:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5908:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5911:1:3",
                              "nodeType": "YulLiteral",
                              "src": "5911:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "5901:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "5901:6:3"
                          },
                          "nativeSrc": "5901:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "5901:12:3"
                        },
                        "nativeSrc": "5901:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "5901:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "5874:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "5874:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "5883:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "5883:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "5870:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "5870:3:3"
                        },
                        "nativeSrc": "5870:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "5870:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5895:2:3",
                        "nodeType": "YulLiteral",
                        "src": "5895:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "5866:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "5866:3:3"
                    },
                    "nativeSrc": "5866:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5866:32:3"
                  },
                  "nativeSrc": "5863:52:3",
                  "nodeType": "YulIf",
                  "src": "5863:52:3"
                },
                {
                  "nativeSrc": "5924:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "5924:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "5937:1:3",
                    "nodeType": "YulLiteral",
                    "src": "5937:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "5928:5:3",
                      "nodeType": "YulTypedName",
                      "src": "5928:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "5947:32:3",
                  "nodeType": "YulAssignment",
                  "src": "5947:32:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5969:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "5969:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "5956:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "5956:12:3"
                    },
                    "nativeSrc": "5956:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "5956:23:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "5947:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "5947:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "5988:15:3",
                  "nodeType": "YulAssignment",
                  "src": "5988:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "5998:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "5998:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "5988:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "5988:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "6012:46:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6012:46:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6043:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "6043:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6054:2:3",
                            "nodeType": "YulLiteral",
                            "src": "6054:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6039:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "6039:3:3"
                        },
                        "nativeSrc": "6039:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "6039:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6026:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "6026:12:3"
                    },
                    "nativeSrc": "6026:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6026:32:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "6016:6:3",
                      "nodeType": "YulTypedName",
                      "src": "6016:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "6101:16:3",
                    "nodeType": "YulBlock",
                    "src": "6101:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6110:1:3",
                              "nodeType": "YulLiteral",
                              "src": "6110:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6113:1:3",
                              "nodeType": "YulLiteral",
                              "src": "6113:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6103:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "6103:6:3"
                          },
                          "nativeSrc": "6103:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "6103:12:3"
                        },
                        "nativeSrc": "6103:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "6103:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "6073:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "6073:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6081:18:3",
                        "nodeType": "YulLiteral",
                        "src": "6081:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "6070:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "6070:2:3"
                    },
                    "nativeSrc": "6070:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6070:30:3"
                  },
                  "nativeSrc": "6067:50:3",
                  "nodeType": "YulIf",
                  "src": "6067:50:3"
                },
                {
                  "nativeSrc": "6126:104:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6126:104:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6202:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "6202:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "6213:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "6213:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6198:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "6198:3:3"
                        },
                        "nativeSrc": "6198:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "6198:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "6222:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "6222:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_string_calldata_dyn_calldata",
                      "nativeSrc": "6152:45:3",
                      "nodeType": "YulIdentifier",
                      "src": "6152:45:3"
                    },
                    "nativeSrc": "6152:78:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6152:78:3"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nativeSrc": "6130:8:3",
                      "nodeType": "YulTypedName",
                      "src": "6130:8:3",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nativeSrc": "6140:8:3",
                      "nodeType": "YulTypedName",
                      "src": "6140:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6239:18:3",
                  "nodeType": "YulAssignment",
                  "src": "6239:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "6249:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "6249:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "6239:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "6239:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "6266:18:3",
                  "nodeType": "YulAssignment",
                  "src": "6266:18:3",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "6276:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "6276:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "6266:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "6266:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "6293:48:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6293:48:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6326:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "6326:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6337:2:3",
                            "nodeType": "YulLiteral",
                            "src": "6337:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6322:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "6322:3:3"
                        },
                        "nativeSrc": "6322:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "6322:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6309:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "6309:12:3"
                    },
                    "nativeSrc": "6309:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6309:32:3"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "6297:8:3",
                      "nodeType": "YulTypedName",
                      "src": "6297:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "6386:16:3",
                    "nodeType": "YulBlock",
                    "src": "6386:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6395:1:3",
                              "nodeType": "YulLiteral",
                              "src": "6395:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6398:1:3",
                              "nodeType": "YulLiteral",
                              "src": "6398:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6388:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "6388:6:3"
                          },
                          "nativeSrc": "6388:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "6388:12:3"
                        },
                        "nativeSrc": "6388:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "6388:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "6356:8:3",
                        "nodeType": "YulIdentifier",
                        "src": "6356:8:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6366:18:3",
                        "nodeType": "YulLiteral",
                        "src": "6366:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "6353:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "6353:2:3"
                    },
                    "nativeSrc": "6353:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6353:32:3"
                  },
                  "nativeSrc": "6350:52:3",
                  "nodeType": "YulIf",
                  "src": "6350:52:3"
                },
                {
                  "nativeSrc": "6411:106:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6411:106:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6487:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "6487:9:3"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "6498:8:3",
                            "nodeType": "YulIdentifier",
                            "src": "6498:8:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6483:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "6483:3:3"
                        },
                        "nativeSrc": "6483:24:3",
                        "nodeType": "YulFunctionCall",
                        "src": "6483:24:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "6509:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "6509:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_string_calldata_dyn_calldata",
                      "nativeSrc": "6437:45:3",
                      "nodeType": "YulIdentifier",
                      "src": "6437:45:3"
                    },
                    "nativeSrc": "6437:80:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6437:80:3"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nativeSrc": "6415:8:3",
                      "nodeType": "YulTypedName",
                      "src": "6415:8:3",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nativeSrc": "6425:8:3",
                      "nodeType": "YulTypedName",
                      "src": "6425:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6526:18:3",
                  "nodeType": "YulAssignment",
                  "src": "6526:18:3",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "6536:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "6536:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "6526:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "6526:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "6553:18:3",
                  "nodeType": "YulAssignment",
                  "src": "6553:18:3",
                  "value": {
                    "name": "value4_1",
                    "nativeSrc": "6563:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "6563:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "6553:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "6553:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_array$_t_string_calldata_ptr_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr",
            "nativeSrc": "5667:910:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "5787:9:3",
                "nodeType": "YulTypedName",
                "src": "5787:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "5798:7:3",
                "nodeType": "YulTypedName",
                "src": "5798:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "5810:6:3",
                "nodeType": "YulTypedName",
                "src": "5810:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "5818:6:3",
                "nodeType": "YulTypedName",
                "src": "5818:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "5826:6:3",
                "nodeType": "YulTypedName",
                "src": "5826:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "5834:6:3",
                "nodeType": "YulTypedName",
                "src": "5834:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "5842:6:3",
                "nodeType": "YulTypedName",
                "src": "5842:6:3",
                "type": ""
              }
            ],
            "src": "5667:910:3"
          },
          {
            "body": {
              "nativeSrc": "6652:156:3",
              "nodeType": "YulBlock",
              "src": "6652:156:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "6698:16:3",
                    "nodeType": "YulBlock",
                    "src": "6698:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "6707:1:3",
                              "nodeType": "YulLiteral",
                              "src": "6707:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6710:1:3",
                              "nodeType": "YulLiteral",
                              "src": "6710:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "6700:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "6700:6:3"
                          },
                          "nativeSrc": "6700:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "6700:12:3"
                        },
                        "nativeSrc": "6700:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "6700:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "6673:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "6673:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "6682:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "6682:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "6669:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "6669:3:3"
                        },
                        "nativeSrc": "6669:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "6669:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6694:2:3",
                        "nodeType": "YulLiteral",
                        "src": "6694:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "6665:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "6665:3:3"
                    },
                    "nativeSrc": "6665:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6665:32:3"
                  },
                  "nativeSrc": "6662:52:3",
                  "nodeType": "YulIf",
                  "src": "6662:52:3"
                },
                {
                  "nativeSrc": "6723:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6723:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "6736:1:3",
                    "nodeType": "YulLiteral",
                    "src": "6736:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "6727:5:3",
                      "nodeType": "YulTypedName",
                      "src": "6727:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "6746:32:3",
                  "nodeType": "YulAssignment",
                  "src": "6746:32:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6768:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "6768:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "6755:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "6755:12:3"
                    },
                    "nativeSrc": "6755:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6755:23:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "6746:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "6746:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "6787:15:3",
                  "nodeType": "YulAssignment",
                  "src": "6787:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "6797:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "6797:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "6787:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "6787:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nativeSrc": "6582:226:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6618:9:3",
                "nodeType": "YulTypedName",
                "src": "6618:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "6629:7:3",
                "nodeType": "YulTypedName",
                "src": "6629:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "6641:6:3",
                "nodeType": "YulTypedName",
                "src": "6641:6:3",
                "type": ""
              }
            ],
            "src": "6582:226:3"
          },
          {
            "body": {
              "nativeSrc": "6863:350:3",
              "nodeType": "YulBlock",
              "src": "6863:350:3",
              "statements": [
                {
                  "nativeSrc": "6873:26:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6873:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "6893:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "6893:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "6887:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "6887:5:3"
                    },
                    "nativeSrc": "6887:12:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6887:12:3"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "6877:6:3",
                      "nodeType": "YulTypedName",
                      "src": "6877:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "6915:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "6915:3:3"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "6920:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "6920:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6908:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "6908:6:3"
                    },
                    "nativeSrc": "6908:19:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6908:19:3"
                  },
                  "nativeSrc": "6908:19:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "6908:19:3"
                },
                {
                  "nativeSrc": "6936:10:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6936:10:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "6945:1:3",
                    "nodeType": "YulLiteral",
                    "src": "6945:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nativeSrc": "6940:1:3",
                      "nodeType": "YulTypedName",
                      "src": "6940:1:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "7007:87:3",
                    "nodeType": "YulBlock",
                    "src": "7007:87:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nativeSrc": "7036:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "7036:3:3"
                                    },
                                    {
                                      "name": "i",
                                      "nativeSrc": "7041:1:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "7041:1:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "7032:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7032:3:3"
                                  },
                                  "nativeSrc": "7032:11:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "7032:11:3"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "7045:4:3",
                                  "nodeType": "YulLiteral",
                                  "src": "7045:4:3",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "7028:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "7028:3:3"
                              },
                              "nativeSrc": "7028:22:3",
                              "nodeType": "YulFunctionCall",
                              "src": "7028:22:3"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nativeSrc": "7066:5:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7066:5:3"
                                        },
                                        {
                                          "name": "i",
                                          "nativeSrc": "7073:1:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7073:1:3"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "7062:3:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7062:3:3"
                                      },
                                      "nativeSrc": "7062:13:3",
                                      "nodeType": "YulFunctionCall",
                                      "src": "7062:13:3"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "7077:4:3",
                                      "nodeType": "YulLiteral",
                                      "src": "7077:4:3",
                                      "type": "",
                                      "value": "0x20"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "7058:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7058:3:3"
                                  },
                                  "nativeSrc": "7058:24:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "7058:24:3"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "7052:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "7052:5:3"
                              },
                              "nativeSrc": "7052:31:3",
                              "nodeType": "YulFunctionCall",
                              "src": "7052:31:3"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "7021:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "7021:6:3"
                          },
                          "nativeSrc": "7021:63:3",
                          "nodeType": "YulFunctionCall",
                          "src": "7021:63:3"
                        },
                        "nativeSrc": "7021:63:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "7021:63:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nativeSrc": "6966:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "6966:1:3"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "6969:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "6969:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "6963:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "6963:2:3"
                    },
                    "nativeSrc": "6963:13:3",
                    "nodeType": "YulFunctionCall",
                    "src": "6963:13:3"
                  },
                  "nativeSrc": "6955:139:3",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "6977:21:3",
                    "nodeType": "YulBlock",
                    "src": "6977:21:3",
                    "statements": [
                      {
                        "nativeSrc": "6979:17:3",
                        "nodeType": "YulAssignment",
                        "src": "6979:17:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nativeSrc": "6988:1:3",
                              "nodeType": "YulIdentifier",
                              "src": "6988:1:3"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "6991:4:3",
                              "nodeType": "YulLiteral",
                              "src": "6991:4:3",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "6984:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "6984:3:3"
                          },
                          "nativeSrc": "6984:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "6984:12:3"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nativeSrc": "6979:1:3",
                            "nodeType": "YulIdentifier",
                            "src": "6979:1:3"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nativeSrc": "6959:3:3",
                    "nodeType": "YulBlock",
                    "src": "6959:3:3",
                    "statements": []
                  },
                  "src": "6955:139:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nativeSrc": "7118:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "7118:3:3"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "7123:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "7123:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "7114:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "7114:3:3"
                            },
                            "nativeSrc": "7114:16:3",
                            "nodeType": "YulFunctionCall",
                            "src": "7114:16:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7132:4:3",
                            "nodeType": "YulLiteral",
                            "src": "7132:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7110:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "7110:3:3"
                        },
                        "nativeSrc": "7110:27:3",
                        "nodeType": "YulFunctionCall",
                        "src": "7110:27:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7139:1:3",
                        "nodeType": "YulLiteral",
                        "src": "7139:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7103:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "7103:6:3"
                    },
                    "nativeSrc": "7103:38:3",
                    "nodeType": "YulFunctionCall",
                    "src": "7103:38:3"
                  },
                  "nativeSrc": "7103:38:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "7103:38:3"
                },
                {
                  "nativeSrc": "7150:57:3",
                  "nodeType": "YulAssignment",
                  "src": "7150:57:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "7165:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "7165:3:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "7178:6:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7178:6:3"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7186:2:3",
                                    "nodeType": "YulLiteral",
                                    "src": "7186:2:3",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "7174:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7174:3:3"
                                },
                                "nativeSrc": "7174:15:3",
                                "nodeType": "YulFunctionCall",
                                "src": "7174:15:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7195:2:3",
                                    "nodeType": "YulLiteral",
                                    "src": "7195:2:3",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "7191:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7191:3:3"
                                },
                                "nativeSrc": "7191:7:3",
                                "nodeType": "YulFunctionCall",
                                "src": "7191:7:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "7170:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "7170:3:3"
                            },
                            "nativeSrc": "7170:29:3",
                            "nodeType": "YulFunctionCall",
                            "src": "7170:29:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7161:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "7161:3:3"
                        },
                        "nativeSrc": "7161:39:3",
                        "nodeType": "YulFunctionCall",
                        "src": "7161:39:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7202:4:3",
                        "nodeType": "YulLiteral",
                        "src": "7202:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "7157:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "7157:3:3"
                    },
                    "nativeSrc": "7157:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "7157:50:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "7150:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "7150:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nativeSrc": "6813:400:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "6840:5:3",
                "nodeType": "YulTypedName",
                "src": "6840:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "6847:3:3",
                "nodeType": "YulTypedName",
                "src": "6847:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "6855:3:3",
                "nodeType": "YulTypedName",
                "src": "6855:3:3",
                "type": ""
              }
            ],
            "src": "6813:400:3"
          },
          {
            "body": {
              "nativeSrc": "7270:60:3",
              "nodeType": "YulBlock",
              "src": "7270:60:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "7287:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "7287:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "7296:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "7296:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7311:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "7311:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7316:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "7316:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "7307:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7307:3:3"
                                },
                                "nativeSrc": "7307:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "7307:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "7320:1:3",
                                "nodeType": "YulLiteral",
                                "src": "7320:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "7303:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "7303:3:3"
                            },
                            "nativeSrc": "7303:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "7303:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "7292:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "7292:3:3"
                        },
                        "nativeSrc": "7292:31:3",
                        "nodeType": "YulFunctionCall",
                        "src": "7292:31:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7280:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "7280:6:3"
                    },
                    "nativeSrc": "7280:44:3",
                    "nodeType": "YulFunctionCall",
                    "src": "7280:44:3"
                  },
                  "nativeSrc": "7280:44:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "7280:44:3"
                }
              ]
            },
            "name": "abi_encode_address_payable",
            "nativeSrc": "7218:112:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "7254:5:3",
                "nodeType": "YulTypedName",
                "src": "7254:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "7261:3:3",
                "nodeType": "YulTypedName",
                "src": "7261:3:3",
                "type": ""
              }
            ],
            "src": "7218:112:3"
          },
          {
            "body": {
              "nativeSrc": "7379:73:3",
              "nodeType": "YulBlock",
              "src": "7379:73:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "7396:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "7396:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "7405:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "7405:5:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7412:32:3",
                            "nodeType": "YulLiteral",
                            "src": "7412:32:3",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "7401:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "7401:3:3"
                        },
                        "nativeSrc": "7401:44:3",
                        "nodeType": "YulFunctionCall",
                        "src": "7401:44:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7389:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "7389:6:3"
                    },
                    "nativeSrc": "7389:57:3",
                    "nodeType": "YulFunctionCall",
                    "src": "7389:57:3"
                  },
                  "nativeSrc": "7389:57:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "7389:57:3"
                }
              ]
            },
            "name": "abi_encode_uint120",
            "nativeSrc": "7335:117:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "7363:5:3",
                "nodeType": "YulTypedName",
                "src": "7363:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "7370:3:3",
                "nodeType": "YulTypedName",
                "src": "7370:3:3",
                "type": ""
              }
            ],
            "src": "7335:117:3"
          },
          {
            "body": {
              "nativeSrc": "7498:50:3",
              "nodeType": "YulBlock",
              "src": "7498:50:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "7515:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "7515:3:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "7534:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "7534:5:3"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "7527:6:3",
                              "nodeType": "YulIdentifier",
                              "src": "7527:6:3"
                            },
                            "nativeSrc": "7527:13:3",
                            "nodeType": "YulFunctionCall",
                            "src": "7527:13:3"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nativeSrc": "7520:6:3",
                          "nodeType": "YulIdentifier",
                          "src": "7520:6:3"
                        },
                        "nativeSrc": "7520:21:3",
                        "nodeType": "YulFunctionCall",
                        "src": "7520:21:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7508:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "7508:6:3"
                    },
                    "nativeSrc": "7508:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "7508:34:3"
                  },
                  "nativeSrc": "7508:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "7508:34:3"
                }
              ]
            },
            "name": "abi_encode_bool",
            "nativeSrc": "7457:91:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "7482:5:3",
                "nodeType": "YulTypedName",
                "src": "7482:5:3",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "7489:3:3",
                "nodeType": "YulTypedName",
                "src": "7489:3:3",
                "type": ""
              }
            ],
            "src": "7457:91:3"
          },
          {
            "body": {
              "nativeSrc": "7900:624:3",
              "nodeType": "YulBlock",
              "src": "7900:624:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7917:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "7917:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7928:3:3",
                        "nodeType": "YulLiteral",
                        "src": "7928:3:3",
                        "type": "",
                        "value": "256"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7910:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "7910:6:3"
                    },
                    "nativeSrc": "7910:22:3",
                    "nodeType": "YulFunctionCall",
                    "src": "7910:22:3"
                  },
                  "nativeSrc": "7910:22:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "7910:22:3"
                },
                {
                  "nativeSrc": "7941:60:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "7941:60:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "7973:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "7973:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7985:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "7985:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7996:3:3",
                            "nodeType": "YulLiteral",
                            "src": "7996:3:3",
                            "type": "",
                            "value": "256"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7981:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "7981:3:3"
                        },
                        "nativeSrc": "7981:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "7981:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "7955:17:3",
                      "nodeType": "YulIdentifier",
                      "src": "7955:17:3"
                    },
                    "nativeSrc": "7955:46:3",
                    "nodeType": "YulFunctionCall",
                    "src": "7955:46:3"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "7945:6:3",
                      "nodeType": "YulTypedName",
                      "src": "7945:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8021:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8021:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8032:2:3",
                            "nodeType": "YulLiteral",
                            "src": "8032:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8017:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8017:3:3"
                        },
                        "nativeSrc": "8017:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8017:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "8041:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8041:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8057:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "8057:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8062:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "8062:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "8053:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8053:3:3"
                                },
                                "nativeSrc": "8053:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "8053:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "8066:1:3",
                                "nodeType": "YulLiteral",
                                "src": "8066:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "8049:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "8049:3:3"
                            },
                            "nativeSrc": "8049:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "8049:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "8037:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8037:3:3"
                        },
                        "nativeSrc": "8037:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8037:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "8010:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8010:6:3"
                    },
                    "nativeSrc": "8010:60:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8010:60:3"
                  },
                  "nativeSrc": "8010:60:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "8010:60:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8090:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8090:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8101:2:3",
                            "nodeType": "YulLiteral",
                            "src": "8101:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8086:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8086:3:3"
                        },
                        "nativeSrc": "8086:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8086:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "8110:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8110:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8126:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "8126:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8131:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "8131:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "8122:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8122:3:3"
                                },
                                "nativeSrc": "8122:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "8122:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "8135:1:3",
                                "nodeType": "YulLiteral",
                                "src": "8135:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "8118:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "8118:3:3"
                            },
                            "nativeSrc": "8118:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "8118:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "8106:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8106:3:3"
                        },
                        "nativeSrc": "8106:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8106:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "8079:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8079:6:3"
                    },
                    "nativeSrc": "8079:60:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8079:60:3"
                  },
                  "nativeSrc": "8079:60:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "8079:60:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8159:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8159:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8170:2:3",
                            "nodeType": "YulLiteral",
                            "src": "8170:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8155:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8155:3:3"
                        },
                        "nativeSrc": "8155:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8155:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "8179:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8179:6:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "8187:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8187:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "8175:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8175:3:3"
                        },
                        "nativeSrc": "8175:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8175:22:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "8148:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8148:6:3"
                    },
                    "nativeSrc": "8148:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8148:50:3"
                  },
                  "nativeSrc": "8148:50:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "8148:50:3"
                },
                {
                  "nativeSrc": "8207:41:3",
                  "nodeType": "YulAssignment",
                  "src": "8207:41:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nativeSrc": "8233:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "8233:6:3"
                      },
                      {
                        "name": "tail_1",
                        "nativeSrc": "8241:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "8241:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "8215:17:3",
                      "nodeType": "YulIdentifier",
                      "src": "8215:17:3"
                    },
                    "nativeSrc": "8215:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8215:33:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "8207:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "8207:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8268:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8268:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8279:3:3",
                            "nodeType": "YulLiteral",
                            "src": "8279:3:3",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8264:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8264:3:3"
                        },
                        "nativeSrc": "8264:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8264:19:3"
                      },
                      {
                        "name": "value4",
                        "nativeSrc": "8285:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "8285:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "8257:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8257:6:3"
                    },
                    "nativeSrc": "8257:35:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8257:35:3"
                  },
                  "nativeSrc": "8257:35:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "8257:35:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8312:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8312:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8323:3:3",
                            "nodeType": "YulLiteral",
                            "src": "8323:3:3",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8308:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8308:3:3"
                        },
                        "nativeSrc": "8308:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8308:19:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value5",
                            "nativeSrc": "8333:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8333:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8341:32:3",
                            "nodeType": "YulLiteral",
                            "src": "8341:32:3",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "8329:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8329:3:3"
                        },
                        "nativeSrc": "8329:45:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8329:45:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "8301:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8301:6:3"
                    },
                    "nativeSrc": "8301:74:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8301:74:3"
                  },
                  "nativeSrc": "8301:74:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "8301:74:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8395:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8395:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8406:3:3",
                            "nodeType": "YulLiteral",
                            "src": "8406:3:3",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8391:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8391:3:3"
                        },
                        "nativeSrc": "8391:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8391:19:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value6",
                            "nativeSrc": "8416:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8416:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8424:32:3",
                            "nodeType": "YulLiteral",
                            "src": "8424:32:3",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "8412:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8412:3:3"
                        },
                        "nativeSrc": "8412:45:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8412:45:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "8384:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8384:6:3"
                    },
                    "nativeSrc": "8384:74:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8384:74:3"
                  },
                  "nativeSrc": "8384:74:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "8384:74:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8478:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8478:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "8489:3:3",
                            "nodeType": "YulLiteral",
                            "src": "8489:3:3",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8474:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8474:3:3"
                        },
                        "nativeSrc": "8474:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8474:19:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value7",
                                "nativeSrc": "8509:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "8509:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "8502:6:3",
                              "nodeType": "YulIdentifier",
                              "src": "8502:6:3"
                            },
                            "nativeSrc": "8502:14:3",
                            "nodeType": "YulFunctionCall",
                            "src": "8502:14:3"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nativeSrc": "8495:6:3",
                          "nodeType": "YulIdentifier",
                          "src": "8495:6:3"
                        },
                        "nativeSrc": "8495:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8495:22:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "8467:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8467:6:3"
                    },
                    "nativeSrc": "8467:51:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8467:51:3"
                  },
                  "nativeSrc": "8467:51:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "8467:51:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr_t_address_payable_t_address_t_string_memory_ptr_t_uint256_t_uint120_t_uint120_t_bool__to_t_string_memory_ptr_t_address_payable_t_address_t_string_memory_ptr_t_uint256_t_uint120_t_uint120_t_bool__fromStack_reversed",
            "nativeSrc": "7553:971:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "7813:9:3",
                "nodeType": "YulTypedName",
                "src": "7813:9:3",
                "type": ""
              },
              {
                "name": "value7",
                "nativeSrc": "7824:6:3",
                "nodeType": "YulTypedName",
                "src": "7824:6:3",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "7832:6:3",
                "nodeType": "YulTypedName",
                "src": "7832:6:3",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "7840:6:3",
                "nodeType": "YulTypedName",
                "src": "7840:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "7848:6:3",
                "nodeType": "YulTypedName",
                "src": "7848:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "7856:6:3",
                "nodeType": "YulTypedName",
                "src": "7856:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "7864:6:3",
                "nodeType": "YulTypedName",
                "src": "7864:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "7872:6:3",
                "nodeType": "YulTypedName",
                "src": "7872:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "7880:6:3",
                "nodeType": "YulTypedName",
                "src": "7880:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "7891:4:3",
                "nodeType": "YulTypedName",
                "src": "7891:4:3",
                "type": ""
              }
            ],
            "src": "7553:971:3"
          },
          {
            "body": {
              "nativeSrc": "8657:558:3",
              "nodeType": "YulBlock",
              "src": "8657:558:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "8703:16:3",
                    "nodeType": "YulBlock",
                    "src": "8703:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8712:1:3",
                              "nodeType": "YulLiteral",
                              "src": "8712:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8715:1:3",
                              "nodeType": "YulLiteral",
                              "src": "8715:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8705:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8705:6:3"
                          },
                          "nativeSrc": "8705:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "8705:12:3"
                        },
                        "nativeSrc": "8705:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "8705:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "8678:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "8678:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "8687:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8687:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "8674:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8674:3:3"
                        },
                        "nativeSrc": "8674:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8674:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8699:2:3",
                        "nodeType": "YulLiteral",
                        "src": "8699:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "8670:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "8670:3:3"
                    },
                    "nativeSrc": "8670:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8670:32:3"
                  },
                  "nativeSrc": "8667:52:3",
                  "nodeType": "YulIf",
                  "src": "8667:52:3"
                },
                {
                  "nativeSrc": "8728:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8728:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "8755:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "8755:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8742:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "8742:12:3"
                    },
                    "nativeSrc": "8742:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8742:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "8732:6:3",
                      "nodeType": "YulTypedName",
                      "src": "8732:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "8808:16:3",
                    "nodeType": "YulBlock",
                    "src": "8808:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "8817:1:3",
                              "nodeType": "YulLiteral",
                              "src": "8817:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "8820:1:3",
                              "nodeType": "YulLiteral",
                              "src": "8820:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "8810:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8810:6:3"
                          },
                          "nativeSrc": "8810:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "8810:12:3"
                        },
                        "nativeSrc": "8810:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "8810:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "8780:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "8780:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "8788:18:3",
                        "nodeType": "YulLiteral",
                        "src": "8788:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "8777:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "8777:2:3"
                    },
                    "nativeSrc": "8777:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8777:30:3"
                  },
                  "nativeSrc": "8774:50:3",
                  "nodeType": "YulIf",
                  "src": "8774:50:3"
                },
                {
                  "nativeSrc": "8833:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8833:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "8890:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "8890:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "8901:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "8901:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "8886:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "8886:3:3"
                        },
                        "nativeSrc": "8886:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "8886:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "8910:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "8910:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "8859:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "8859:26:3"
                    },
                    "nativeSrc": "8859:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8859:59:3"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "8837:8:3",
                      "nodeType": "YulTypedName",
                      "src": "8837:8:3",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "8847:8:3",
                      "nodeType": "YulTypedName",
                      "src": "8847:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "8927:18:3",
                  "nodeType": "YulAssignment",
                  "src": "8927:18:3",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "8937:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "8937:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "8927:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8927:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "8954:18:3",
                  "nodeType": "YulAssignment",
                  "src": "8954:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "8964:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "8964:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "8954:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "8954:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "8981:48:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "8981:48:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9014:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "9014:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9025:2:3",
                            "nodeType": "YulLiteral",
                            "src": "9025:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9010:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "9010:3:3"
                        },
                        "nativeSrc": "9010:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "9010:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "8997:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "8997:12:3"
                    },
                    "nativeSrc": "8997:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "8997:32:3"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "8985:8:3",
                      "nodeType": "YulTypedName",
                      "src": "8985:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "9074:16:3",
                    "nodeType": "YulBlock",
                    "src": "9074:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9083:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9083:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9086:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9086:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9076:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "9076:6:3"
                          },
                          "nativeSrc": "9076:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "9076:12:3"
                        },
                        "nativeSrc": "9076:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "9076:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "9044:8:3",
                        "nodeType": "YulIdentifier",
                        "src": "9044:8:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9054:18:3",
                        "nodeType": "YulLiteral",
                        "src": "9054:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "9041:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "9041:2:3"
                    },
                    "nativeSrc": "9041:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9041:32:3"
                  },
                  "nativeSrc": "9038:52:3",
                  "nodeType": "YulIf",
                  "src": "9038:52:3"
                },
                {
                  "nativeSrc": "9099:34:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9099:34:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9113:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "9113:9:3"
                      },
                      {
                        "name": "offset_1",
                        "nativeSrc": "9124:8:3",
                        "nodeType": "YulIdentifier",
                        "src": "9124:8:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "9109:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "9109:3:3"
                    },
                    "nativeSrc": "9109:24:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9109:24:3"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "9103:2:3",
                      "nodeType": "YulTypedName",
                      "src": "9103:2:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "9172:16:3",
                    "nodeType": "YulBlock",
                    "src": "9172:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9181:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9181:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9184:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9184:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9174:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "9174:6:3"
                          },
                          "nativeSrc": "9174:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "9174:12:3"
                        },
                        "nativeSrc": "9174:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "9174:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "9153:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "9153:7:3"
                          },
                          {
                            "name": "_1",
                            "nativeSrc": "9162:2:3",
                            "nodeType": "YulIdentifier",
                            "src": "9162:2:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "9149:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "9149:3:3"
                        },
                        "nativeSrc": "9149:16:3",
                        "nodeType": "YulFunctionCall",
                        "src": "9149:16:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9167:3:3",
                        "nodeType": "YulLiteral",
                        "src": "9167:3:3",
                        "type": "",
                        "value": "256"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "9145:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "9145:3:3"
                    },
                    "nativeSrc": "9145:26:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9145:26:3"
                  },
                  "nativeSrc": "9142:46:3",
                  "nodeType": "YulIf",
                  "src": "9142:46:3"
                },
                {
                  "nativeSrc": "9197:12:3",
                  "nodeType": "YulAssignment",
                  "src": "9197:12:3",
                  "value": {
                    "name": "_1",
                    "nativeSrc": "9207:2:3",
                    "nodeType": "YulIdentifier",
                    "src": "9207:2:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "9197:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "9197:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_struct$_MVO_$61_calldata_ptr",
            "nativeSrc": "8529:686:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "8607:9:3",
                "nodeType": "YulTypedName",
                "src": "8607:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "8618:7:3",
                "nodeType": "YulTypedName",
                "src": "8618:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "8630:6:3",
                "nodeType": "YulTypedName",
                "src": "8630:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "8638:6:3",
                "nodeType": "YulTypedName",
                "src": "8638:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "8646:6:3",
                "nodeType": "YulTypedName",
                "src": "8646:6:3",
                "type": ""
              }
            ],
            "src": "8529:686:3"
          },
          {
            "body": {
              "nativeSrc": "9341:99:3",
              "nodeType": "YulBlock",
              "src": "9341:99:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9358:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "9358:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9369:2:3",
                        "nodeType": "YulLiteral",
                        "src": "9369:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "9351:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "9351:6:3"
                    },
                    "nativeSrc": "9351:21:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9351:21:3"
                  },
                  "nativeSrc": "9351:21:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "9351:21:3"
                },
                {
                  "nativeSrc": "9381:53:3",
                  "nodeType": "YulAssignment",
                  "src": "9381:53:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "9407:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "9407:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9419:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "9419:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "9430:2:3",
                            "nodeType": "YulLiteral",
                            "src": "9430:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9415:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "9415:3:3"
                        },
                        "nativeSrc": "9415:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "9415:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nativeSrc": "9389:17:3",
                      "nodeType": "YulIdentifier",
                      "src": "9389:17:3"
                    },
                    "nativeSrc": "9389:45:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9389:45:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "9381:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "9381:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "9220:220:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "9310:9:3",
                "nodeType": "YulTypedName",
                "src": "9310:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "9321:6:3",
                "nodeType": "YulTypedName",
                "src": "9321:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "9332:4:3",
                "nodeType": "YulTypedName",
                "src": "9332:4:3",
                "type": ""
              }
            ],
            "src": "9220:220:3"
          },
          {
            "body": {
              "nativeSrc": "9546:102:3",
              "nodeType": "YulBlock",
              "src": "9546:102:3",
              "statements": [
                {
                  "nativeSrc": "9556:26:3",
                  "nodeType": "YulAssignment",
                  "src": "9556:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9568:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "9568:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9579:2:3",
                        "nodeType": "YulLiteral",
                        "src": "9579:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "9564:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "9564:3:3"
                    },
                    "nativeSrc": "9564:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9564:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "9556:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "9556:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9598:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "9598:9:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "9613:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "9613:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9629:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "9629:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9634:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "9634:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "9625:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9625:3:3"
                                },
                                "nativeSrc": "9625:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "9625:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "9638:1:3",
                                "nodeType": "YulLiteral",
                                "src": "9638:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "9621:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "9621:3:3"
                            },
                            "nativeSrc": "9621:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "9621:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "9609:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "9609:3:3"
                        },
                        "nativeSrc": "9609:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "9609:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "9591:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "9591:6:3"
                    },
                    "nativeSrc": "9591:51:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9591:51:3"
                  },
                  "nativeSrc": "9591:51:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "9591:51:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nativeSrc": "9445:203:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "9515:9:3",
                "nodeType": "YulTypedName",
                "src": "9515:9:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "9526:6:3",
                "nodeType": "YulTypedName",
                "src": "9526:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "9537:4:3",
                "nodeType": "YulTypedName",
                "src": "9537:4:3",
                "type": ""
              }
            ],
            "src": "9445:203:3"
          },
          {
            "body": {
              "nativeSrc": "9743:321:3",
              "nodeType": "YulBlock",
              "src": "9743:321:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "9789:16:3",
                    "nodeType": "YulBlock",
                    "src": "9789:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9798:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9798:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9801:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9801:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9791:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "9791:6:3"
                          },
                          "nativeSrc": "9791:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "9791:12:3"
                        },
                        "nativeSrc": "9791:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "9791:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "9764:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "9764:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "9773:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "9773:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "9760:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "9760:3:3"
                        },
                        "nativeSrc": "9760:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "9760:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9785:2:3",
                        "nodeType": "YulLiteral",
                        "src": "9785:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "9756:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "9756:3:3"
                    },
                    "nativeSrc": "9756:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9756:32:3"
                  },
                  "nativeSrc": "9753:52:3",
                  "nodeType": "YulIf",
                  "src": "9753:52:3"
                },
                {
                  "nativeSrc": "9814:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9814:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "9841:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "9841:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "9828:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "9828:12:3"
                    },
                    "nativeSrc": "9828:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9828:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "9818:6:3",
                      "nodeType": "YulTypedName",
                      "src": "9818:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "9894:16:3",
                    "nodeType": "YulBlock",
                    "src": "9894:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "9903:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9903:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9906:1:3",
                              "nodeType": "YulLiteral",
                              "src": "9906:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "9896:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "9896:6:3"
                          },
                          "nativeSrc": "9896:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "9896:12:3"
                        },
                        "nativeSrc": "9896:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "9896:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "9866:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "9866:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "9874:18:3",
                        "nodeType": "YulLiteral",
                        "src": "9874:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "9863:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "9863:2:3"
                    },
                    "nativeSrc": "9863:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9863:30:3"
                  },
                  "nativeSrc": "9860:50:3",
                  "nodeType": "YulIf",
                  "src": "9860:50:3"
                },
                {
                  "nativeSrc": "9919:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "9919:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9976:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "9976:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "9987:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "9987:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "9972:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "9972:3:3"
                        },
                        "nativeSrc": "9972:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "9972:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "9996:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "9996:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "9945:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "9945:26:3"
                    },
                    "nativeSrc": "9945:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "9945:59:3"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "9923:8:3",
                      "nodeType": "YulTypedName",
                      "src": "9923:8:3",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "9933:8:3",
                      "nodeType": "YulTypedName",
                      "src": "9933:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "10013:18:3",
                  "nodeType": "YulAssignment",
                  "src": "10013:18:3",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "10023:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "10023:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "10013:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "10013:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "10040:18:3",
                  "nodeType": "YulAssignment",
                  "src": "10040:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "10050:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "10050:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "10040:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "10040:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptr",
            "nativeSrc": "9653:411:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "9701:9:3",
                "nodeType": "YulTypedName",
                "src": "9701:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "9712:7:3",
                "nodeType": "YulTypedName",
                "src": "9712:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "9724:6:3",
                "nodeType": "YulTypedName",
                "src": "9724:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "9732:6:3",
                "nodeType": "YulTypedName",
                "src": "9732:6:3",
                "type": ""
              }
            ],
            "src": "9653:411:3"
          },
          {
            "body": {
              "nativeSrc": "10176:418:3",
              "nodeType": "YulBlock",
              "src": "10176:418:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "10222:16:3",
                    "nodeType": "YulBlock",
                    "src": "10222:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10231:1:3",
                              "nodeType": "YulLiteral",
                              "src": "10231:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10234:1:3",
                              "nodeType": "YulLiteral",
                              "src": "10234:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10224:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "10224:6:3"
                          },
                          "nativeSrc": "10224:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "10224:12:3"
                        },
                        "nativeSrc": "10224:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "10224:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "10197:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "10197:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "10206:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "10206:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "10193:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "10193:3:3"
                        },
                        "nativeSrc": "10193:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "10193:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10218:2:3",
                        "nodeType": "YulLiteral",
                        "src": "10218:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "10189:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "10189:3:3"
                    },
                    "nativeSrc": "10189:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10189:32:3"
                  },
                  "nativeSrc": "10186:52:3",
                  "nodeType": "YulIf",
                  "src": "10186:52:3"
                },
                {
                  "nativeSrc": "10247:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10247:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "10260:1:3",
                    "nodeType": "YulLiteral",
                    "src": "10260:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "10251:5:3",
                      "nodeType": "YulTypedName",
                      "src": "10251:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "10270:32:3",
                  "nodeType": "YulAssignment",
                  "src": "10270:32:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "10292:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "10292:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "10279:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "10279:12:3"
                    },
                    "nativeSrc": "10279:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10279:23:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "10270:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "10270:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "10311:15:3",
                  "nodeType": "YulAssignment",
                  "src": "10311:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "10321:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "10321:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "10311:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "10311:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "10335:46:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10335:46:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10366:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "10366:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10377:2:3",
                            "nodeType": "YulLiteral",
                            "src": "10377:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "10362:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "10362:3:3"
                        },
                        "nativeSrc": "10362:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "10362:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "10349:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "10349:12:3"
                    },
                    "nativeSrc": "10349:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10349:32:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "10339:6:3",
                      "nodeType": "YulTypedName",
                      "src": "10339:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "10424:16:3",
                    "nodeType": "YulBlock",
                    "src": "10424:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "10433:1:3",
                              "nodeType": "YulLiteral",
                              "src": "10433:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "10436:1:3",
                              "nodeType": "YulLiteral",
                              "src": "10436:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "10426:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "10426:6:3"
                          },
                          "nativeSrc": "10426:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "10426:12:3"
                        },
                        "nativeSrc": "10426:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "10426:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "10396:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "10396:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10404:18:3",
                        "nodeType": "YulLiteral",
                        "src": "10404:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "10393:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "10393:2:3"
                    },
                    "nativeSrc": "10393:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10393:30:3"
                  },
                  "nativeSrc": "10390:50:3",
                  "nodeType": "YulIf",
                  "src": "10390:50:3"
                },
                {
                  "nativeSrc": "10449:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "10449:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10506:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "10506:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "10517:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "10517:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "10502:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "10502:3:3"
                        },
                        "nativeSrc": "10502:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "10502:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "10526:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "10526:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "10475:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "10475:26:3"
                    },
                    "nativeSrc": "10475:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10475:59:3"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nativeSrc": "10453:8:3",
                      "nodeType": "YulTypedName",
                      "src": "10453:8:3",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nativeSrc": "10463:8:3",
                      "nodeType": "YulTypedName",
                      "src": "10463:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "10543:18:3",
                  "nodeType": "YulAssignment",
                  "src": "10543:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "10553:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "10553:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "10543:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "10543:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "10570:18:3",
                  "nodeType": "YulAssignment",
                  "src": "10570:18:3",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "10580:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "10580:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "10570:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "10570:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_string_calldata_ptr",
            "nativeSrc": "10069:525:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "10126:9:3",
                "nodeType": "YulTypedName",
                "src": "10126:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "10137:7:3",
                "nodeType": "YulTypedName",
                "src": "10137:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "10149:6:3",
                "nodeType": "YulTypedName",
                "src": "10149:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "10157:6:3",
                "nodeType": "YulTypedName",
                "src": "10157:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "10165:6:3",
                "nodeType": "YulTypedName",
                "src": "10165:6:3",
                "type": ""
              }
            ],
            "src": "10069:525:3"
          },
          {
            "body": {
              "nativeSrc": "10742:178:3",
              "nodeType": "YulBlock",
              "src": "10742:178:3",
              "statements": [
                {
                  "nativeSrc": "10752:26:3",
                  "nodeType": "YulAssignment",
                  "src": "10752:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "10764:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "10764:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "10775:2:3",
                        "nodeType": "YulLiteral",
                        "src": "10775:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "10760:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "10760:3:3"
                    },
                    "nativeSrc": "10760:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10760:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "10752:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "10752:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "10794:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "10794:9:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "10809:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "10809:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "10825:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "10825:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "10830:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "10830:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "10821:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10821:3:3"
                                },
                                "nativeSrc": "10821:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "10821:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "10834:1:3",
                                "nodeType": "YulLiteral",
                                "src": "10834:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "10817:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "10817:3:3"
                            },
                            "nativeSrc": "10817:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "10817:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "10805:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "10805:3:3"
                        },
                        "nativeSrc": "10805:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "10805:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10787:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "10787:6:3"
                    },
                    "nativeSrc": "10787:51:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10787:51:3"
                  },
                  "nativeSrc": "10787:51:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "10787:51:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10858:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "10858:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10869:2:3",
                            "nodeType": "YulLiteral",
                            "src": "10869:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "10854:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "10854:3:3"
                        },
                        "nativeSrc": "10854:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "10854:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "10878:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "10878:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "10886:26:3",
                            "nodeType": "YulLiteral",
                            "src": "10886:26:3",
                            "type": "",
                            "value": "0xffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "10874:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "10874:3:3"
                        },
                        "nativeSrc": "10874:39:3",
                        "nodeType": "YulFunctionCall",
                        "src": "10874:39:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "10847:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "10847:6:3"
                    },
                    "nativeSrc": "10847:67:3",
                    "nodeType": "YulFunctionCall",
                    "src": "10847:67:3"
                  },
                  "nativeSrc": "10847:67:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "10847:67:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_payable_t_uint96__to_t_address_payable_t_uint96__fromStack_reversed",
            "nativeSrc": "10599:321:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "10703:9:3",
                "nodeType": "YulTypedName",
                "src": "10703:9:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "10714:6:3",
                "nodeType": "YulTypedName",
                "src": "10714:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "10722:6:3",
                "nodeType": "YulTypedName",
                "src": "10722:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "10733:4:3",
                "nodeType": "YulTypedName",
                "src": "10733:4:3",
                "type": ""
              }
            ],
            "src": "10599:321:3"
          },
          {
            "body": {
              "nativeSrc": "11042:340:3",
              "nodeType": "YulBlock",
              "src": "11042:340:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "11088:16:3",
                    "nodeType": "YulBlock",
                    "src": "11088:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "11097:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11097:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "11100:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11100:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "11090:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "11090:6:3"
                          },
                          "nativeSrc": "11090:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "11090:12:3"
                        },
                        "nativeSrc": "11090:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "11090:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "11063:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "11063:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "11072:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "11072:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "11059:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "11059:3:3"
                        },
                        "nativeSrc": "11059:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "11059:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11084:2:3",
                        "nodeType": "YulLiteral",
                        "src": "11084:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "11055:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "11055:3:3"
                    },
                    "nativeSrc": "11055:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11055:32:3"
                  },
                  "nativeSrc": "11052:52:3",
                  "nodeType": "YulIf",
                  "src": "11052:52:3"
                },
                {
                  "nativeSrc": "11113:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11113:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "11140:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "11140:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "11127:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "11127:12:3"
                    },
                    "nativeSrc": "11127:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11127:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "11117:6:3",
                      "nodeType": "YulTypedName",
                      "src": "11117:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "11193:16:3",
                    "nodeType": "YulBlock",
                    "src": "11193:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "11202:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11202:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "11205:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11205:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "11195:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "11195:6:3"
                          },
                          "nativeSrc": "11195:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "11195:12:3"
                        },
                        "nativeSrc": "11195:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "11195:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "11165:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "11165:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11173:18:3",
                        "nodeType": "YulLiteral",
                        "src": "11173:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "11162:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "11162:2:3"
                    },
                    "nativeSrc": "11162:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11162:30:3"
                  },
                  "nativeSrc": "11159:50:3",
                  "nodeType": "YulIf",
                  "src": "11159:50:3"
                },
                {
                  "nativeSrc": "11218:104:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11218:104:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "11294:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "11294:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "11305:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "11305:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11290:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "11290:3:3"
                        },
                        "nativeSrc": "11290:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "11290:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "11314:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "11314:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_string_calldata_dyn_calldata",
                      "nativeSrc": "11244:45:3",
                      "nodeType": "YulIdentifier",
                      "src": "11244:45:3"
                    },
                    "nativeSrc": "11244:78:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11244:78:3"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "11222:8:3",
                      "nodeType": "YulTypedName",
                      "src": "11222:8:3",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "11232:8:3",
                      "nodeType": "YulTypedName",
                      "src": "11232:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "11331:18:3",
                  "nodeType": "YulAssignment",
                  "src": "11331:18:3",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "11341:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "11341:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "11331:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "11331:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "11358:18:3",
                  "nodeType": "YulAssignment",
                  "src": "11358:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "11368:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "11368:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "11358:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "11358:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
            "nativeSrc": "10925:457:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "11000:9:3",
                "nodeType": "YulTypedName",
                "src": "11000:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "11011:7:3",
                "nodeType": "YulTypedName",
                "src": "11011:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "11023:6:3",
                "nodeType": "YulTypedName",
                "src": "11023:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "11031:6:3",
                "nodeType": "YulTypedName",
                "src": "11031:6:3",
                "type": ""
              }
            ],
            "src": "10925:457:3"
          },
          {
            "body": {
              "nativeSrc": "11530:686:3",
              "nodeType": "YulBlock",
              "src": "11530:686:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "11576:16:3",
                    "nodeType": "YulBlock",
                    "src": "11576:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "11585:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11585:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "11588:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11588:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "11578:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "11578:6:3"
                          },
                          "nativeSrc": "11578:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "11578:12:3"
                        },
                        "nativeSrc": "11578:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "11578:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "11551:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "11551:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "11560:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "11560:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "11547:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "11547:3:3"
                        },
                        "nativeSrc": "11547:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "11547:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11572:2:3",
                        "nodeType": "YulLiteral",
                        "src": "11572:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "11543:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "11543:3:3"
                    },
                    "nativeSrc": "11543:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11543:32:3"
                  },
                  "nativeSrc": "11540:52:3",
                  "nodeType": "YulIf",
                  "src": "11540:52:3"
                },
                {
                  "nativeSrc": "11601:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11601:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "11628:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "11628:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "11615:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "11615:12:3"
                    },
                    "nativeSrc": "11615:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11615:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "11605:6:3",
                      "nodeType": "YulTypedName",
                      "src": "11605:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "11681:16:3",
                    "nodeType": "YulBlock",
                    "src": "11681:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "11690:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11690:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "11693:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11693:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "11683:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "11683:6:3"
                          },
                          "nativeSrc": "11683:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "11683:12:3"
                        },
                        "nativeSrc": "11683:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "11683:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "11653:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "11653:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11661:18:3",
                        "nodeType": "YulLiteral",
                        "src": "11661:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "11650:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "11650:2:3"
                    },
                    "nativeSrc": "11650:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11650:30:3"
                  },
                  "nativeSrc": "11647:50:3",
                  "nodeType": "YulIf",
                  "src": "11647:50:3"
                },
                {
                  "nativeSrc": "11706:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11706:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "11763:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "11763:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "11774:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "11774:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11759:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "11759:3:3"
                        },
                        "nativeSrc": "11759:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "11759:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "11783:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "11783:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "11732:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "11732:26:3"
                    },
                    "nativeSrc": "11732:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11732:59:3"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "11710:8:3",
                      "nodeType": "YulTypedName",
                      "src": "11710:8:3",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "11720:8:3",
                      "nodeType": "YulTypedName",
                      "src": "11720:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "11800:18:3",
                  "nodeType": "YulAssignment",
                  "src": "11800:18:3",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "11810:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "11810:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "11800:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "11800:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "11827:18:3",
                  "nodeType": "YulAssignment",
                  "src": "11827:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "11837:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "11837:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "11827:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "11827:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "11854:48:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11854:48:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "11887:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "11887:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "11898:2:3",
                            "nodeType": "YulLiteral",
                            "src": "11898:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "11883:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "11883:3:3"
                        },
                        "nativeSrc": "11883:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "11883:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "11870:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "11870:12:3"
                    },
                    "nativeSrc": "11870:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11870:32:3"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nativeSrc": "11858:8:3",
                      "nodeType": "YulTypedName",
                      "src": "11858:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "11947:16:3",
                    "nodeType": "YulBlock",
                    "src": "11947:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "11956:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11956:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "11959:1:3",
                              "nodeType": "YulLiteral",
                              "src": "11959:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "11949:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "11949:6:3"
                          },
                          "nativeSrc": "11949:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "11949:12:3"
                        },
                        "nativeSrc": "11949:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "11949:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nativeSrc": "11917:8:3",
                        "nodeType": "YulIdentifier",
                        "src": "11917:8:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "11927:18:3",
                        "nodeType": "YulLiteral",
                        "src": "11927:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "11914:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "11914:2:3"
                    },
                    "nativeSrc": "11914:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11914:32:3"
                  },
                  "nativeSrc": "11911:52:3",
                  "nodeType": "YulIf",
                  "src": "11911:52:3"
                },
                {
                  "nativeSrc": "11972:87:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "11972:87:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12029:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "12029:9:3"
                          },
                          {
                            "name": "offset_1",
                            "nativeSrc": "12040:8:3",
                            "nodeType": "YulIdentifier",
                            "src": "12040:8:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12025:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "12025:3:3"
                        },
                        "nativeSrc": "12025:24:3",
                        "nodeType": "YulFunctionCall",
                        "src": "12025:24:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "12051:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "12051:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "11998:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "11998:26:3"
                    },
                    "nativeSrc": "11998:61:3",
                    "nodeType": "YulFunctionCall",
                    "src": "11998:61:3"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nativeSrc": "11976:8:3",
                      "nodeType": "YulTypedName",
                      "src": "11976:8:3",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nativeSrc": "11986:8:3",
                      "nodeType": "YulTypedName",
                      "src": "11986:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "12068:18:3",
                  "nodeType": "YulAssignment",
                  "src": "12068:18:3",
                  "value": {
                    "name": "value2_1",
                    "nativeSrc": "12078:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "12078:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "12068:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "12068:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "12095:18:3",
                  "nodeType": "YulAssignment",
                  "src": "12095:18:3",
                  "value": {
                    "name": "value3_1",
                    "nativeSrc": "12105:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "12105:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "12095:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "12095:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "12122:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12122:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "12135:1:3",
                    "nodeType": "YulLiteral",
                    "src": "12135:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "12126:5:3",
                      "nodeType": "YulTypedName",
                      "src": "12126:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "12145:41:3",
                  "nodeType": "YulAssignment",
                  "src": "12145:41:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12171:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "12171:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12182:2:3",
                            "nodeType": "YulLiteral",
                            "src": "12182:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12167:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "12167:3:3"
                        },
                        "nativeSrc": "12167:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "12167:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "12154:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "12154:12:3"
                    },
                    "nativeSrc": "12154:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12154:32:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "12145:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "12145:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "12195:15:3",
                  "nodeType": "YulAssignment",
                  "src": "12195:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "12205:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "12205:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "12195:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "12195:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_bytes_calldata_ptrt_bytes32",
            "nativeSrc": "11387:829:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "11464:9:3",
                "nodeType": "YulTypedName",
                "src": "11464:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "11475:7:3",
                "nodeType": "YulTypedName",
                "src": "11475:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "11487:6:3",
                "nodeType": "YulTypedName",
                "src": "11487:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "11495:6:3",
                "nodeType": "YulTypedName",
                "src": "11495:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "11503:6:3",
                "nodeType": "YulTypedName",
                "src": "11503:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "11511:6:3",
                "nodeType": "YulTypedName",
                "src": "11511:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "11519:6:3",
                "nodeType": "YulTypedName",
                "src": "11519:6:3",
                "type": ""
              }
            ],
            "src": "11387:829:3"
          },
          {
            "body": {
              "nativeSrc": "12270:139:3",
              "nodeType": "YulBlock",
              "src": "12270:139:3",
              "statements": [
                {
                  "nativeSrc": "12280:29:3",
                  "nodeType": "YulAssignment",
                  "src": "12280:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "12302:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "12302:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "12289:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "12289:12:3"
                    },
                    "nativeSrc": "12289:20:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12289:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "12280:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "12280:5:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "12387:16:3",
                    "nodeType": "YulBlock",
                    "src": "12387:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "12396:1:3",
                              "nodeType": "YulLiteral",
                              "src": "12396:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "12399:1:3",
                              "nodeType": "YulLiteral",
                              "src": "12399:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "12389:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "12389:6:3"
                          },
                          "nativeSrc": "12389:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "12389:12:3"
                        },
                        "nativeSrc": "12389:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "12389:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "12331:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "12331:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "12342:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "12342:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "12349:34:3",
                                "nodeType": "YulLiteral",
                                "src": "12349:34:3",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "12338:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "12338:3:3"
                            },
                            "nativeSrc": "12338:46:3",
                            "nodeType": "YulFunctionCall",
                            "src": "12338:46:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "12328:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "12328:2:3"
                        },
                        "nativeSrc": "12328:57:3",
                        "nodeType": "YulFunctionCall",
                        "src": "12328:57:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "12321:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "12321:6:3"
                    },
                    "nativeSrc": "12321:65:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12321:65:3"
                  },
                  "nativeSrc": "12318:85:3",
                  "nodeType": "YulIf",
                  "src": "12318:85:3"
                }
              ]
            },
            "name": "abi_decode_uint128",
            "nativeSrc": "12221:188:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "12249:6:3",
                "nodeType": "YulTypedName",
                "src": "12249:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "12260:5:3",
                "nodeType": "YulTypedName",
                "src": "12260:5:3",
                "type": ""
              }
            ],
            "src": "12221:188:3"
          },
          {
            "body": {
              "nativeSrc": "12572:658:3",
              "nodeType": "YulBlock",
              "src": "12572:658:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "12619:16:3",
                    "nodeType": "YulBlock",
                    "src": "12619:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "12628:1:3",
                              "nodeType": "YulLiteral",
                              "src": "12628:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "12631:1:3",
                              "nodeType": "YulLiteral",
                              "src": "12631:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "12621:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "12621:6:3"
                          },
                          "nativeSrc": "12621:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "12621:12:3"
                        },
                        "nativeSrc": "12621:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "12621:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "12593:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "12593:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "12602:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "12602:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "12589:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "12589:3:3"
                        },
                        "nativeSrc": "12589:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "12589:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12614:3:3",
                        "nodeType": "YulLiteral",
                        "src": "12614:3:3",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "12585:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "12585:3:3"
                    },
                    "nativeSrc": "12585:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12585:33:3"
                  },
                  "nativeSrc": "12582:53:3",
                  "nodeType": "YulIf",
                  "src": "12582:53:3"
                },
                {
                  "nativeSrc": "12644:37:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12644:37:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "12671:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "12671:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "12658:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "12658:12:3"
                    },
                    "nativeSrc": "12658:23:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12658:23:3"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "12648:6:3",
                      "nodeType": "YulTypedName",
                      "src": "12648:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "12724:16:3",
                    "nodeType": "YulBlock",
                    "src": "12724:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "12733:1:3",
                              "nodeType": "YulLiteral",
                              "src": "12733:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "12736:1:3",
                              "nodeType": "YulLiteral",
                              "src": "12736:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "12726:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "12726:6:3"
                          },
                          "nativeSrc": "12726:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "12726:12:3"
                        },
                        "nativeSrc": "12726:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "12726:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "12696:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "12696:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "12704:18:3",
                        "nodeType": "YulLiteral",
                        "src": "12704:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "12693:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "12693:2:3"
                    },
                    "nativeSrc": "12693:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12693:30:3"
                  },
                  "nativeSrc": "12690:50:3",
                  "nodeType": "YulIf",
                  "src": "12690:50:3"
                },
                {
                  "nativeSrc": "12749:85:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12749:85:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12806:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "12806:9:3"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "12817:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "12817:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12802:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "12802:3:3"
                        },
                        "nativeSrc": "12802:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "12802:22:3"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "12826:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "12826:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nativeSrc": "12775:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "12775:26:3"
                    },
                    "nativeSrc": "12775:59:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12775:59:3"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nativeSrc": "12753:8:3",
                      "nodeType": "YulTypedName",
                      "src": "12753:8:3",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nativeSrc": "12763:8:3",
                      "nodeType": "YulTypedName",
                      "src": "12763:8:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "12843:18:3",
                  "nodeType": "YulAssignment",
                  "src": "12843:18:3",
                  "value": {
                    "name": "value0_1",
                    "nativeSrc": "12853:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "12853:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "12843:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "12843:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "12870:18:3",
                  "nodeType": "YulAssignment",
                  "src": "12870:18:3",
                  "value": {
                    "name": "value1_1",
                    "nativeSrc": "12880:8:3",
                    "nodeType": "YulIdentifier",
                    "src": "12880:8:3"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "12870:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "12870:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "12897:14:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12897:14:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "12910:1:3",
                    "nodeType": "YulLiteral",
                    "src": "12910:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "12901:5:3",
                      "nodeType": "YulTypedName",
                      "src": "12901:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "12920:41:3",
                  "nodeType": "YulAssignment",
                  "src": "12920:41:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "12946:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "12946:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "12957:2:3",
                            "nodeType": "YulLiteral",
                            "src": "12957:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "12942:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "12942:3:3"
                        },
                        "nativeSrc": "12942:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "12942:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "12929:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "12929:12:3"
                    },
                    "nativeSrc": "12929:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "12929:32:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "12920:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "12920:5:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "12970:15:3",
                  "nodeType": "YulAssignment",
                  "src": "12970:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "12980:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "12980:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "12970:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "12970:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "12994:47:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "12994:47:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13026:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "13026:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13037:2:3",
                            "nodeType": "YulLiteral",
                            "src": "13037:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13022:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "13022:3:3"
                        },
                        "nativeSrc": "13022:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "13022:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "13009:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "13009:12:3"
                    },
                    "nativeSrc": "13009:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13009:32:3"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "12998:7:3",
                      "nodeType": "YulTypedName",
                      "src": "12998:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "13075:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "13075:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "13050:24:3",
                      "nodeType": "YulIdentifier",
                      "src": "13050:24:3"
                    },
                    "nativeSrc": "13050:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13050:33:3"
                  },
                  "nativeSrc": "13050:33:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "13050:33:3"
                },
                {
                  "nativeSrc": "13092:17:3",
                  "nodeType": "YulAssignment",
                  "src": "13092:17:3",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "13102:7:3",
                    "nodeType": "YulIdentifier",
                    "src": "13102:7:3"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nativeSrc": "13092:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "13092:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "13118:48:3",
                  "nodeType": "YulAssignment",
                  "src": "13118:48:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13151:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "13151:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13162:2:3",
                            "nodeType": "YulLiteral",
                            "src": "13162:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13147:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "13147:3:3"
                        },
                        "nativeSrc": "13147:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "13147:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint128",
                      "nativeSrc": "13128:18:3",
                      "nodeType": "YulIdentifier",
                      "src": "13128:18:3"
                    },
                    "nativeSrc": "13128:38:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13128:38:3"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nativeSrc": "13118:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "13118:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "13175:49:3",
                  "nodeType": "YulAssignment",
                  "src": "13175:49:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "13208:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "13208:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13219:3:3",
                            "nodeType": "YulLiteral",
                            "src": "13219:3:3",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "13204:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "13204:3:3"
                        },
                        "nativeSrc": "13204:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "13204:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint128",
                      "nativeSrc": "13185:18:3",
                      "nodeType": "YulIdentifier",
                      "src": "13185:18:3"
                    },
                    "nativeSrc": "13185:39:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13185:39:3"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nativeSrc": "13175:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "13175:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_uint256t_addresst_uint128t_uint128",
            "nativeSrc": "12414:816:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "12498:9:3",
                "nodeType": "YulTypedName",
                "src": "12498:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "12509:7:3",
                "nodeType": "YulTypedName",
                "src": "12509:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "12521:6:3",
                "nodeType": "YulTypedName",
                "src": "12521:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "12529:6:3",
                "nodeType": "YulTypedName",
                "src": "12529:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "12537:6:3",
                "nodeType": "YulTypedName",
                "src": "12537:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "12545:6:3",
                "nodeType": "YulTypedName",
                "src": "12545:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "12553:6:3",
                "nodeType": "YulTypedName",
                "src": "12553:6:3",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "12561:6:3",
                "nodeType": "YulTypedName",
                "src": "12561:6:3",
                "type": ""
              }
            ],
            "src": "12414:816:3"
          },
          {
            "body": {
              "nativeSrc": "13384:124:3",
              "nodeType": "YulBlock",
              "src": "13384:124:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "13407:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "13407:3:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "13412:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "13412:6:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "13420:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "13420:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "13394:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "13394:12:3"
                    },
                    "nativeSrc": "13394:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13394:33:3"
                  },
                  "nativeSrc": "13394:33:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "13394:33:3"
                },
                {
                  "nativeSrc": "13436:26:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "13436:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "13450:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "13450:3:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "13455:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "13455:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "13446:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "13446:3:3"
                    },
                    "nativeSrc": "13446:16:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13446:16:3"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "13440:2:3",
                      "nodeType": "YulTypedName",
                      "src": "13440:2:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "13478:2:3",
                        "nodeType": "YulIdentifier",
                        "src": "13478:2:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13482:1:3",
                        "nodeType": "YulLiteral",
                        "src": "13482:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13471:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "13471:6:3"
                    },
                    "nativeSrc": "13471:13:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13471:13:3"
                  },
                  "nativeSrc": "13471:13:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "13471:13:3"
                },
                {
                  "nativeSrc": "13493:9:3",
                  "nodeType": "YulAssignment",
                  "src": "13493:9:3",
                  "value": {
                    "name": "_1",
                    "nativeSrc": "13500:2:3",
                    "nodeType": "YulIdentifier",
                    "src": "13500:2:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "13493:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "13493:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "13235:273:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "13352:3:3",
                "nodeType": "YulTypedName",
                "src": "13352:3:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "13357:6:3",
                "nodeType": "YulTypedName",
                "src": "13357:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "13365:6:3",
                "nodeType": "YulTypedName",
                "src": "13365:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "13376:3:3",
                "nodeType": "YulTypedName",
                "src": "13376:3:3",
                "type": ""
              }
            ],
            "src": "13235:273:3"
          },
          {
            "body": {
              "nativeSrc": "13545:95:3",
              "nodeType": "YulBlock",
              "src": "13545:95:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "13562:1:3",
                        "nodeType": "YulLiteral",
                        "src": "13562:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "13569:3:3",
                            "nodeType": "YulLiteral",
                            "src": "13569:3:3",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "13574:10:3",
                            "nodeType": "YulLiteral",
                            "src": "13574:10:3",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "13565:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "13565:3:3"
                        },
                        "nativeSrc": "13565:20:3",
                        "nodeType": "YulFunctionCall",
                        "src": "13565:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13555:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "13555:6:3"
                    },
                    "nativeSrc": "13555:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13555:31:3"
                  },
                  "nativeSrc": "13555:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "13555:31:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "13602:1:3",
                        "nodeType": "YulLiteral",
                        "src": "13602:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13605:4:3",
                        "nodeType": "YulLiteral",
                        "src": "13605:4:3",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "13595:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "13595:6:3"
                    },
                    "nativeSrc": "13595:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13595:15:3"
                  },
                  "nativeSrc": "13595:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "13595:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "13626:1:3",
                        "nodeType": "YulLiteral",
                        "src": "13626:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "13629:4:3",
                        "nodeType": "YulLiteral",
                        "src": "13629:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "13619:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "13619:6:3"
                    },
                    "nativeSrc": "13619:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13619:15:3"
                  },
                  "nativeSrc": "13619:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "13619:15:3"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nativeSrc": "13513:127:3",
            "nodeType": "YulFunctionDefinition",
            "src": "13513:127:3"
          },
          {
            "body": {
              "nativeSrc": "13693:77:3",
              "nodeType": "YulBlock",
              "src": "13693:77:3",
              "statements": [
                {
                  "nativeSrc": "13703:16:3",
                  "nodeType": "YulAssignment",
                  "src": "13703:16:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "13714:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "13714:1:3"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "13717:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "13717:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "13710:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "13710:3:3"
                    },
                    "nativeSrc": "13710:9:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13710:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nativeSrc": "13703:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "13703:3:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "13742:22:3",
                    "nodeType": "YulBlock",
                    "src": "13742:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "13744:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "13744:16:3"
                          },
                          "nativeSrc": "13744:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "13744:18:3"
                        },
                        "nativeSrc": "13744:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "13744:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "13734:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "13734:1:3"
                      },
                      {
                        "name": "sum",
                        "nativeSrc": "13737:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "13737:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "13731:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "13731:2:3"
                    },
                    "nativeSrc": "13731:10:3",
                    "nodeType": "YulFunctionCall",
                    "src": "13731:10:3"
                  },
                  "nativeSrc": "13728:36:3",
                  "nodeType": "YulIf",
                  "src": "13728:36:3"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nativeSrc": "13645:125:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "13676:1:3",
                "nodeType": "YulTypedName",
                "src": "13676:1:3",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "13679:1:3",
                "nodeType": "YulTypedName",
                "src": "13679:1:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nativeSrc": "13685:3:3",
                "nodeType": "YulTypedName",
                "src": "13685:3:3",
                "type": ""
              }
            ],
            "src": "13645:125:3"
          },
          {
            "body": {
              "nativeSrc": "14040:401:3",
              "nodeType": "YulBlock",
              "src": "14040:401:3",
              "statements": [
                {
                  "nativeSrc": "14050:27:3",
                  "nodeType": "YulAssignment",
                  "src": "14050:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "14062:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "14062:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14073:3:3",
                        "nodeType": "YulLiteral",
                        "src": "14073:3:3",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "14058:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "14058:3:3"
                    },
                    "nativeSrc": "14058:19:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14058:19:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "14050:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "14050:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "14093:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "14093:9:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "14108:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "14108:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "14124:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "14124:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "14129:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "14129:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "14120:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "14120:3:3"
                                },
                                "nativeSrc": "14120:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "14120:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "14133:1:3",
                                "nodeType": "YulLiteral",
                                "src": "14133:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "14116:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "14116:3:3"
                            },
                            "nativeSrc": "14116:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "14116:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "14104:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14104:3:3"
                        },
                        "nativeSrc": "14104:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14104:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14086:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14086:6:3"
                    },
                    "nativeSrc": "14086:51:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14086:51:3"
                  },
                  "nativeSrc": "14086:51:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14086:51:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14157:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "14157:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14168:2:3",
                            "nodeType": "YulLiteral",
                            "src": "14168:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14153:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14153:3:3"
                        },
                        "nativeSrc": "14153:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14153:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "14177:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "14177:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "14193:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "14193:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "14198:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "14198:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "14189:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "14189:3:3"
                                },
                                "nativeSrc": "14189:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "14189:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "14202:1:3",
                                "nodeType": "YulLiteral",
                                "src": "14202:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "14185:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "14185:3:3"
                            },
                            "nativeSrc": "14185:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "14185:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "14173:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14173:3:3"
                        },
                        "nativeSrc": "14173:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14173:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14146:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14146:6:3"
                    },
                    "nativeSrc": "14146:60:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14146:60:3"
                  },
                  "nativeSrc": "14146:60:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14146:60:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14226:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "14226:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14237:2:3",
                            "nodeType": "YulLiteral",
                            "src": "14237:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14222:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14222:3:3"
                        },
                        "nativeSrc": "14222:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14222:18:3"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "14242:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14242:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14215:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14215:6:3"
                    },
                    "nativeSrc": "14215:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14215:34:3"
                  },
                  "nativeSrc": "14215:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14215:34:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14269:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "14269:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14280:2:3",
                            "nodeType": "YulLiteral",
                            "src": "14280:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14265:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14265:3:3"
                        },
                        "nativeSrc": "14265:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14265:18:3"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "14285:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14285:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14258:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14258:6:3"
                    },
                    "nativeSrc": "14258:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14258:34:3"
                  },
                  "nativeSrc": "14258:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14258:34:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14312:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "14312:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14323:3:3",
                            "nodeType": "YulLiteral",
                            "src": "14323:3:3",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14308:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14308:3:3"
                        },
                        "nativeSrc": "14308:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14308:19:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value4",
                            "nativeSrc": "14333:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "14333:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14341:4:3",
                            "nodeType": "YulLiteral",
                            "src": "14341:4:3",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "14329:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14329:3:3"
                        },
                        "nativeSrc": "14329:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14329:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14301:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14301:6:3"
                    },
                    "nativeSrc": "14301:46:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14301:46:3"
                  },
                  "nativeSrc": "14301:46:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14301:46:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14367:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "14367:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14378:3:3",
                            "nodeType": "YulLiteral",
                            "src": "14378:3:3",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14363:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14363:3:3"
                        },
                        "nativeSrc": "14363:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14363:19:3"
                      },
                      {
                        "name": "value5",
                        "nativeSrc": "14384:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14384:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14356:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14356:6:3"
                    },
                    "nativeSrc": "14356:35:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14356:35:3"
                  },
                  "nativeSrc": "14356:35:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14356:35:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14411:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "14411:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14422:3:3",
                            "nodeType": "YulLiteral",
                            "src": "14422:3:3",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14407:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14407:3:3"
                        },
                        "nativeSrc": "14407:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14407:19:3"
                      },
                      {
                        "name": "value6",
                        "nativeSrc": "14428:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14428:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14400:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14400:6:3"
                    },
                    "nativeSrc": "14400:35:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14400:35:3"
                  },
                  "nativeSrc": "14400:35:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14400:35:3"
                }
              ]
            },
            "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": "13775:666:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "13961:9:3",
                "nodeType": "YulTypedName",
                "src": "13961:9:3",
                "type": ""
              },
              {
                "name": "value6",
                "nativeSrc": "13972:6:3",
                "nodeType": "YulTypedName",
                "src": "13972:6:3",
                "type": ""
              },
              {
                "name": "value5",
                "nativeSrc": "13980:6:3",
                "nodeType": "YulTypedName",
                "src": "13980:6:3",
                "type": ""
              },
              {
                "name": "value4",
                "nativeSrc": "13988:6:3",
                "nodeType": "YulTypedName",
                "src": "13988:6:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "13996:6:3",
                "nodeType": "YulTypedName",
                "src": "13996:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "14004:6:3",
                "nodeType": "YulTypedName",
                "src": "14004:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "14012:6:3",
                "nodeType": "YulTypedName",
                "src": "14012:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "14020:6:3",
                "nodeType": "YulTypedName",
                "src": "14020:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "14031:4:3",
                "nodeType": "YulTypedName",
                "src": "14031:4:3",
                "type": ""
              }
            ],
            "src": "13775:666:3"
          },
          {
            "body": {
              "nativeSrc": "14575:119:3",
              "nodeType": "YulBlock",
              "src": "14575:119:3",
              "statements": [
                {
                  "nativeSrc": "14585:26:3",
                  "nodeType": "YulAssignment",
                  "src": "14585:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "14597:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "14597:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14608:2:3",
                        "nodeType": "YulLiteral",
                        "src": "14608:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "14593:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "14593:3:3"
                    },
                    "nativeSrc": "14593:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14593:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "14585:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "14585:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "14627:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "14627:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "14638:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14638:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14620:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14620:6:3"
                    },
                    "nativeSrc": "14620:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14620:25:3"
                  },
                  "nativeSrc": "14620:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14620:25:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "14665:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "14665:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14676:2:3",
                            "nodeType": "YulLiteral",
                            "src": "14676:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14661:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14661:3:3"
                        },
                        "nativeSrc": "14661:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14661:18:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "14681:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14681:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14654:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14654:6:3"
                    },
                    "nativeSrc": "14654:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14654:34:3"
                  },
                  "nativeSrc": "14654:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14654:34:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nativeSrc": "14446:248:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "14536:9:3",
                "nodeType": "YulTypedName",
                "src": "14536:9:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "14547:6:3",
                "nodeType": "YulTypedName",
                "src": "14547:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "14555:6:3",
                "nodeType": "YulTypedName",
                "src": "14555:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "14566:4:3",
                "nodeType": "YulTypedName",
                "src": "14566:4:3",
                "type": ""
              }
            ],
            "src": "14446:248:3"
          },
          {
            "body": {
              "nativeSrc": "14766:200:3",
              "nodeType": "YulBlock",
              "src": "14766:200:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "14783:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "14783:3:3"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "14788:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14788:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14776:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14776:6:3"
                    },
                    "nativeSrc": "14776:19:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14776:19:3"
                  },
                  "nativeSrc": "14776:19:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14776:19:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "14821:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "14821:3:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14826:4:3",
                            "nodeType": "YulLiteral",
                            "src": "14826:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14817:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14817:3:3"
                        },
                        "nativeSrc": "14817:14:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14817:14:3"
                      },
                      {
                        "name": "start",
                        "nativeSrc": "14833:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "14833:5:3"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "14840:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "14840:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "14804:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "14804:12:3"
                    },
                    "nativeSrc": "14804:43:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14804:43:3"
                  },
                  "nativeSrc": "14804:43:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14804:43:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nativeSrc": "14871:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "14871:3:3"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "14876:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "14876:6:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "14867:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "14867:3:3"
                            },
                            "nativeSrc": "14867:16:3",
                            "nodeType": "YulFunctionCall",
                            "src": "14867:16:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "14885:4:3",
                            "nodeType": "YulLiteral",
                            "src": "14885:4:3",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14863:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14863:3:3"
                        },
                        "nativeSrc": "14863:27:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14863:27:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14892:1:3",
                        "nodeType": "YulLiteral",
                        "src": "14892:1:3",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "14856:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "14856:6:3"
                    },
                    "nativeSrc": "14856:38:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14856:38:3"
                  },
                  "nativeSrc": "14856:38:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "14856:38:3"
                },
                {
                  "nativeSrc": "14903:57:3",
                  "nodeType": "YulAssignment",
                  "src": "14903:57:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "14918:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "14918:3:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "14931:6:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14931:6:3"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "14939:2:3",
                                    "nodeType": "YulLiteral",
                                    "src": "14939:2:3",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "14927:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "14927:3:3"
                                },
                                "nativeSrc": "14927:15:3",
                                "nodeType": "YulFunctionCall",
                                "src": "14927:15:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "14948:2:3",
                                    "nodeType": "YulLiteral",
                                    "src": "14948:2:3",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "14944:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "14944:3:3"
                                },
                                "nativeSrc": "14944:7:3",
                                "nodeType": "YulFunctionCall",
                                "src": "14944:7:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "14923:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "14923:3:3"
                            },
                            "nativeSrc": "14923:29:3",
                            "nodeType": "YulFunctionCall",
                            "src": "14923:29:3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "14914:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "14914:3:3"
                        },
                        "nativeSrc": "14914:39:3",
                        "nodeType": "YulFunctionCall",
                        "src": "14914:39:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "14955:4:3",
                        "nodeType": "YulLiteral",
                        "src": "14955:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "14910:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "14910:3:3"
                    },
                    "nativeSrc": "14910:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "14910:50:3"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "14903:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "14903:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string_calldata",
            "nativeSrc": "14699:267:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "start",
                "nativeSrc": "14735:5:3",
                "nodeType": "YulTypedName",
                "src": "14735:5:3",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "14742:6:3",
                "nodeType": "YulTypedName",
                "src": "14742:6:3",
                "type": ""
              },
              {
                "name": "pos",
                "nativeSrc": "14750:3:3",
                "nodeType": "YulTypedName",
                "src": "14750:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "14758:3:3",
                "nodeType": "YulTypedName",
                "src": "14758:3:3",
                "type": ""
              }
            ],
            "src": "14699:267:3"
          },
          {
            "body": {
              "nativeSrc": "15130:159:3",
              "nodeType": "YulBlock",
              "src": "15130:159:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "15147:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "15147:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15158:2:3",
                        "nodeType": "YulLiteral",
                        "src": "15158:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "15140:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "15140:6:3"
                    },
                    "nativeSrc": "15140:21:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15140:21:3"
                  },
                  "nativeSrc": "15140:21:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "15140:21:3"
                },
                {
                  "nativeSrc": "15170:70:3",
                  "nodeType": "YulAssignment",
                  "src": "15170:70:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "15205:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "15205:6:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "15213:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "15213:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "15225:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "15225:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15236:2:3",
                            "nodeType": "YulLiteral",
                            "src": "15236:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15221:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "15221:3:3"
                        },
                        "nativeSrc": "15221:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "15221:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "15178:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "15178:26:3"
                    },
                    "nativeSrc": "15178:62:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15178:62:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "15170:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "15170:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "15260:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "15260:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15271:2:3",
                            "nodeType": "YulLiteral",
                            "src": "15271:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "15256:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "15256:3:3"
                        },
                        "nativeSrc": "15256:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "15256:18:3"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "15276:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "15276:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "15249:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "15249:6:3"
                    },
                    "nativeSrc": "15249:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15249:34:3"
                  },
                  "nativeSrc": "15249:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "15249:34:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed",
            "nativeSrc": "14971:318:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "15083:9:3",
                "nodeType": "YulTypedName",
                "src": "15083:9:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "15094:6:3",
                "nodeType": "YulTypedName",
                "src": "15094:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "15102:6:3",
                "nodeType": "YulTypedName",
                "src": "15102:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "15110:6:3",
                "nodeType": "YulTypedName",
                "src": "15110:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "15121:4:3",
                "nodeType": "YulTypedName",
                "src": "15121:4:3",
                "type": ""
              }
            ],
            "src": "14971:318:3"
          },
          {
            "body": {
              "nativeSrc": "15343:79:3",
              "nodeType": "YulBlock",
              "src": "15343:79:3",
              "statements": [
                {
                  "nativeSrc": "15353:17:3",
                  "nodeType": "YulAssignment",
                  "src": "15353:17:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "15365:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "15365:1:3"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "15368:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "15368:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "15361:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "15361:3:3"
                    },
                    "nativeSrc": "15361:9:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15361:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "15353:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "15353:4:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "15394:22:3",
                    "nodeType": "YulBlock",
                    "src": "15394:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "15396:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "15396:16:3"
                          },
                          "nativeSrc": "15396:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "15396:18:3"
                        },
                        "nativeSrc": "15396:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "15396:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nativeSrc": "15385:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "15385:4:3"
                      },
                      {
                        "name": "x",
                        "nativeSrc": "15391:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "15391:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "15382:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "15382:2:3"
                    },
                    "nativeSrc": "15382:11:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15382:11:3"
                  },
                  "nativeSrc": "15379:37:3",
                  "nodeType": "YulIf",
                  "src": "15379:37:3"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nativeSrc": "15294:128:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "15325:1:3",
                "nodeType": "YulTypedName",
                "src": "15325:1:3",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "15328:1:3",
                "nodeType": "YulTypedName",
                "src": "15328:1:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "15334:4:3",
                "nodeType": "YulTypedName",
                "src": "15334:4:3",
                "type": ""
              }
            ],
            "src": "15294:128:3"
          },
          {
            "body": {
              "nativeSrc": "15459:95:3",
              "nodeType": "YulBlock",
              "src": "15459:95:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "15476:1:3",
                        "nodeType": "YulLiteral",
                        "src": "15476:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "15483:3:3",
                            "nodeType": "YulLiteral",
                            "src": "15483:3:3",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "15488:10:3",
                            "nodeType": "YulLiteral",
                            "src": "15488:10:3",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "15479:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "15479:3:3"
                        },
                        "nativeSrc": "15479:20:3",
                        "nodeType": "YulFunctionCall",
                        "src": "15479:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "15469:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "15469:6:3"
                    },
                    "nativeSrc": "15469:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15469:31:3"
                  },
                  "nativeSrc": "15469:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "15469:31:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "15516:1:3",
                        "nodeType": "YulLiteral",
                        "src": "15516:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15519:4:3",
                        "nodeType": "YulLiteral",
                        "src": "15519:4:3",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "15509:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "15509:6:3"
                    },
                    "nativeSrc": "15509:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15509:15:3"
                  },
                  "nativeSrc": "15509:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "15509:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "15540:1:3",
                        "nodeType": "YulLiteral",
                        "src": "15540:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15543:4:3",
                        "nodeType": "YulLiteral",
                        "src": "15543:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "15533:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "15533:6:3"
                    },
                    "nativeSrc": "15533:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15533:15:3"
                  },
                  "nativeSrc": "15533:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "15533:15:3"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nativeSrc": "15427:127:3",
            "nodeType": "YulFunctionDefinition",
            "src": "15427:127:3"
          },
          {
            "body": {
              "nativeSrc": "15601:76:3",
              "nodeType": "YulBlock",
              "src": "15601:76:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "15655:16:3",
                    "nodeType": "YulBlock",
                    "src": "15655:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15664:1:3",
                              "nodeType": "YulLiteral",
                              "src": "15664:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15667:1:3",
                              "nodeType": "YulLiteral",
                              "src": "15667:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "15657:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "15657:6:3"
                          },
                          "nativeSrc": "15657:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "15657:12:3"
                        },
                        "nativeSrc": "15657:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "15657:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "15624:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "15624:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "15645:5:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15645:5:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "15638:6:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "15638:6:3"
                                },
                                "nativeSrc": "15638:13:3",
                                "nodeType": "YulFunctionCall",
                                "src": "15638:13:3"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "15631:6:3",
                              "nodeType": "YulIdentifier",
                              "src": "15631:6:3"
                            },
                            "nativeSrc": "15631:21:3",
                            "nodeType": "YulFunctionCall",
                            "src": "15631:21:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "15621:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "15621:2:3"
                        },
                        "nativeSrc": "15621:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "15621:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "15614:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "15614:6:3"
                    },
                    "nativeSrc": "15614:40:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15614:40:3"
                  },
                  "nativeSrc": "15611:60:3",
                  "nodeType": "YulIf",
                  "src": "15611:60:3"
                }
              ]
            },
            "name": "validator_revert_bool",
            "nativeSrc": "15559:118:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "15590:5:3",
                "nodeType": "YulTypedName",
                "src": "15590:5:3",
                "type": ""
              }
            ],
            "src": "15559:118:3"
          },
          {
            "body": {
              "nativeSrc": "15760:167:3",
              "nodeType": "YulBlock",
              "src": "15760:167:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "15806:16:3",
                    "nodeType": "YulBlock",
                    "src": "15806:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "15815:1:3",
                              "nodeType": "YulLiteral",
                              "src": "15815:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "15818:1:3",
                              "nodeType": "YulLiteral",
                              "src": "15818:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "15808:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "15808:6:3"
                          },
                          "nativeSrc": "15808:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "15808:12:3"
                        },
                        "nativeSrc": "15808:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "15808:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "15781:7:3",
                            "nodeType": "YulIdentifier",
                            "src": "15781:7:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "15790:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "15790:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "15777:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "15777:3:3"
                        },
                        "nativeSrc": "15777:23:3",
                        "nodeType": "YulFunctionCall",
                        "src": "15777:23:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "15802:2:3",
                        "nodeType": "YulLiteral",
                        "src": "15802:2:3",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "15773:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "15773:3:3"
                    },
                    "nativeSrc": "15773:32:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15773:32:3"
                  },
                  "nativeSrc": "15770:52:3",
                  "nodeType": "YulIf",
                  "src": "15770:52:3"
                },
                {
                  "nativeSrc": "15831:29:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "15831:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "15850:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "15850:9:3"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "15844:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "15844:5:3"
                    },
                    "nativeSrc": "15844:16:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15844:16:3"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "15835:5:3",
                      "nodeType": "YulTypedName",
                      "src": "15835:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "15891:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "15891:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nativeSrc": "15869:21:3",
                      "nodeType": "YulIdentifier",
                      "src": "15869:21:3"
                    },
                    "nativeSrc": "15869:28:3",
                    "nodeType": "YulFunctionCall",
                    "src": "15869:28:3"
                  },
                  "nativeSrc": "15869:28:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "15869:28:3"
                },
                {
                  "nativeSrc": "15906:15:3",
                  "nodeType": "YulAssignment",
                  "src": "15906:15:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "15916:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "15916:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "15906:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "15906:6:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nativeSrc": "15682:245:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "15726:9:3",
                "nodeType": "YulTypedName",
                "src": "15726:9:3",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "15737:7:3",
                "nodeType": "YulTypedName",
                "src": "15737:7:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "15749:6:3",
                "nodeType": "YulTypedName",
                "src": "15749:6:3",
                "type": ""
              }
            ],
            "src": "15682:245:3"
          },
          {
            "body": {
              "nativeSrc": "16119:202:3",
              "nodeType": "YulBlock",
              "src": "16119:202:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "16136:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "16136:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "16147:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "16147:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "16129:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "16129:6:3"
                    },
                    "nativeSrc": "16129:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16129:25:3"
                  },
                  "nativeSrc": "16129:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "16129:25:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "16174:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "16174:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "16185:2:3",
                            "nodeType": "YulLiteral",
                            "src": "16185:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "16170:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "16170:3:3"
                        },
                        "nativeSrc": "16170:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "16170:18:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "16190:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "16190:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "16163:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "16163:6:3"
                    },
                    "nativeSrc": "16163:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16163:34:3"
                  },
                  "nativeSrc": "16163:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "16163:34:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "16217:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "16217:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "16228:2:3",
                            "nodeType": "YulLiteral",
                            "src": "16228:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "16213:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "16213:3:3"
                        },
                        "nativeSrc": "16213:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "16213:18:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16233:2:3",
                        "nodeType": "YulLiteral",
                        "src": "16233:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "16206:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "16206:6:3"
                    },
                    "nativeSrc": "16206:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16206:30:3"
                  },
                  "nativeSrc": "16206:30:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "16206:30:3"
                },
                {
                  "nativeSrc": "16245:70:3",
                  "nodeType": "YulAssignment",
                  "src": "16245:70:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nativeSrc": "16280:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "16280:6:3"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "16288:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "16288:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "16300:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "16300:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "16311:2:3",
                            "nodeType": "YulLiteral",
                            "src": "16311:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "16296:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "16296:3:3"
                        },
                        "nativeSrc": "16296:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "16296:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "16253:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "16253:26:3"
                    },
                    "nativeSrc": "16253:62:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16253:62:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "16245:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "16245:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256_t_string_calldata_ptr__to_t_uint256_t_uint256_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "15932:389:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "16064:9:3",
                "nodeType": "YulTypedName",
                "src": "16064:9:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "16075:6:3",
                "nodeType": "YulTypedName",
                "src": "16075:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "16083:6:3",
                "nodeType": "YulTypedName",
                "src": "16083:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "16091:6:3",
                "nodeType": "YulTypedName",
                "src": "16091:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "16099:6:3",
                "nodeType": "YulTypedName",
                "src": "16099:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "16110:4:3",
                "nodeType": "YulTypedName",
                "src": "16110:4:3",
                "type": ""
              }
            ],
            "src": "15932:389:3"
          },
          {
            "body": {
              "nativeSrc": "16421:427:3",
              "nodeType": "YulBlock",
              "src": "16421:427:3",
              "statements": [
                {
                  "nativeSrc": "16431:51:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16431:51:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nativeSrc": "16470:11:3",
                        "nodeType": "YulIdentifier",
                        "src": "16470:11:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "16457:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "16457:12:3"
                    },
                    "nativeSrc": "16457:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16457:25:3"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "16435:18:3",
                      "nodeType": "YulTypedName",
                      "src": "16435:18:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "16571:16:3",
                    "nodeType": "YulBlock",
                    "src": "16571:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "16580:1:3",
                              "nodeType": "YulLiteral",
                              "src": "16580:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "16583:1:3",
                              "nodeType": "YulLiteral",
                              "src": "16583:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "16573:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "16573:6:3"
                          },
                          "nativeSrc": "16573:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "16573:12:3"
                        },
                        "nativeSrc": "16573:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "16573:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "16505:18:3",
                            "nodeType": "YulIdentifier",
                            "src": "16505:18:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "16533:12:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "16533:12:3"
                                    },
                                    "nativeSrc": "16533:14:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "16533:14:3"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "16549:8:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16549:8:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "16529:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "16529:3:3"
                                },
                                "nativeSrc": "16529:29:3",
                                "nodeType": "YulFunctionCall",
                                "src": "16529:29:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "16564:2:3",
                                    "nodeType": "YulLiteral",
                                    "src": "16564:2:3",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "16560:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "16560:3:3"
                                },
                                "nativeSrc": "16560:7:3",
                                "nodeType": "YulFunctionCall",
                                "src": "16560:7:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "16525:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "16525:3:3"
                            },
                            "nativeSrc": "16525:43:3",
                            "nodeType": "YulFunctionCall",
                            "src": "16525:43:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "16501:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "16501:3:3"
                        },
                        "nativeSrc": "16501:68:3",
                        "nodeType": "YulFunctionCall",
                        "src": "16501:68:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "16494:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "16494:6:3"
                    },
                    "nativeSrc": "16494:76:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16494:76:3"
                  },
                  "nativeSrc": "16491:96:3",
                  "nodeType": "YulIf",
                  "src": "16491:96:3"
                },
                {
                  "nativeSrc": "16596:47:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16596:47:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nativeSrc": "16614:8:3",
                        "nodeType": "YulIdentifier",
                        "src": "16614:8:3"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "16624:18:3",
                        "nodeType": "YulIdentifier",
                        "src": "16624:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "16610:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "16610:3:3"
                    },
                    "nativeSrc": "16610:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16610:33:3"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nativeSrc": "16600:6:3",
                      "nodeType": "YulTypedName",
                      "src": "16600:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "16652:30:3",
                  "nodeType": "YulAssignment",
                  "src": "16652:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "16675:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "16675:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "16662:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "16662:12:3"
                    },
                    "nativeSrc": "16662:20:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16662:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "16652:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "16652:6:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "16725:16:3",
                    "nodeType": "YulBlock",
                    "src": "16725:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "16734:1:3",
                              "nodeType": "YulLiteral",
                              "src": "16734:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "16737:1:3",
                              "nodeType": "YulLiteral",
                              "src": "16737:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "16727:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "16727:6:3"
                          },
                          "nativeSrc": "16727:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "16727:12:3"
                        },
                        "nativeSrc": "16727:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "16727:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "16697:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "16697:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16705:18:3",
                        "nodeType": "YulLiteral",
                        "src": "16705:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "16694:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "16694:2:3"
                    },
                    "nativeSrc": "16694:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16694:30:3"
                  },
                  "nativeSrc": "16691:50:3",
                  "nodeType": "YulIf",
                  "src": "16691:50:3"
                },
                {
                  "nativeSrc": "16750:25:3",
                  "nodeType": "YulAssignment",
                  "src": "16750:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nativeSrc": "16762:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "16762:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16770:4:3",
                        "nodeType": "YulLiteral",
                        "src": "16770:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "16758:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "16758:3:3"
                    },
                    "nativeSrc": "16758:17:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16758:17:3"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nativeSrc": "16750:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "16750:4:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "16826:16:3",
                    "nodeType": "YulBlock",
                    "src": "16826:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "16835:1:3",
                              "nodeType": "YulLiteral",
                              "src": "16835:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "16838:1:3",
                              "nodeType": "YulLiteral",
                              "src": "16838:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "16828:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "16828:6:3"
                          },
                          "nativeSrc": "16828:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "16828:12:3"
                        },
                        "nativeSrc": "16828:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "16828:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nativeSrc": "16791:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "16791:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "16801:12:3",
                              "nodeType": "YulIdentifier",
                              "src": "16801:12:3"
                            },
                            "nativeSrc": "16801:14:3",
                            "nodeType": "YulFunctionCall",
                            "src": "16801:14:3"
                          },
                          {
                            "name": "length",
                            "nativeSrc": "16817:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "16817:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "16797:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "16797:3:3"
                        },
                        "nativeSrc": "16797:27:3",
                        "nodeType": "YulFunctionCall",
                        "src": "16797:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "16787:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "16787:3:3"
                    },
                    "nativeSrc": "16787:38:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16787:38:3"
                  },
                  "nativeSrc": "16784:58:3",
                  "nodeType": "YulIf",
                  "src": "16784:58:3"
                }
              ]
            },
            "name": "access_calldata_tail_t_string_calldata_ptr",
            "nativeSrc": "16326:522:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "16378:8:3",
                "nodeType": "YulTypedName",
                "src": "16378:8:3",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nativeSrc": "16388:11:3",
                "nodeType": "YulTypedName",
                "src": "16388:11:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nativeSrc": "16404:4:3",
                "nodeType": "YulTypedName",
                "src": "16404:4:3",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "16410:6:3",
                "nodeType": "YulTypedName",
                "src": "16410:6:3",
                "type": ""
              }
            ],
            "src": "16326:522:3"
          },
          {
            "body": {
              "nativeSrc": "16908:325:3",
              "nodeType": "YulBlock",
              "src": "16908:325:3",
              "statements": [
                {
                  "nativeSrc": "16918:22:3",
                  "nodeType": "YulAssignment",
                  "src": "16918:22:3",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "16932:1:3",
                        "nodeType": "YulLiteral",
                        "src": "16932:1:3",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nativeSrc": "16935:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "16935:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nativeSrc": "16928:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "16928:3:3"
                    },
                    "nativeSrc": "16928:12:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16928:12:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "16918:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "16918:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "16949:38:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "16949:38:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nativeSrc": "16979:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "16979:4:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "16985:1:3",
                        "nodeType": "YulLiteral",
                        "src": "16985:1:3",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nativeSrc": "16975:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "16975:3:3"
                    },
                    "nativeSrc": "16975:12:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16975:12:3"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nativeSrc": "16953:18:3",
                      "nodeType": "YulTypedName",
                      "src": "16953:18:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "17026:31:3",
                    "nodeType": "YulBlock",
                    "src": "17026:31:3",
                    "statements": [
                      {
                        "nativeSrc": "17028:27:3",
                        "nodeType": "YulAssignment",
                        "src": "17028:27:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nativeSrc": "17042:6:3",
                              "nodeType": "YulIdentifier",
                              "src": "17042:6:3"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "17050:4:3",
                              "nodeType": "YulLiteral",
                              "src": "17050:4:3",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "17038:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "17038:3:3"
                          },
                          "nativeSrc": "17038:17:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17038:17:3"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nativeSrc": "17028:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "17028:6:3"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "17006:18:3",
                        "nodeType": "YulIdentifier",
                        "src": "17006:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "16999:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "16999:6:3"
                    },
                    "nativeSrc": "16999:26:3",
                    "nodeType": "YulFunctionCall",
                    "src": "16999:26:3"
                  },
                  "nativeSrc": "16996:61:3",
                  "nodeType": "YulIf",
                  "src": "16996:61:3"
                },
                {
                  "body": {
                    "nativeSrc": "17116:111:3",
                    "nodeType": "YulBlock",
                    "src": "17116:111:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "17137:1:3",
                              "nodeType": "YulLiteral",
                              "src": "17137:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "17144:3:3",
                                  "nodeType": "YulLiteral",
                                  "src": "17144:3:3",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "17149:10:3",
                                  "nodeType": "YulLiteral",
                                  "src": "17149:10:3",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "17140:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "17140:3:3"
                              },
                              "nativeSrc": "17140:20:3",
                              "nodeType": "YulFunctionCall",
                              "src": "17140:20:3"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "17130:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "17130:6:3"
                          },
                          "nativeSrc": "17130:31:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17130:31:3"
                        },
                        "nativeSrc": "17130:31:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "17130:31:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "17181:1:3",
                              "nodeType": "YulLiteral",
                              "src": "17181:1:3",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "17184:4:3",
                              "nodeType": "YulLiteral",
                              "src": "17184:4:3",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "17174:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "17174:6:3"
                          },
                          "nativeSrc": "17174:15:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17174:15:3"
                        },
                        "nativeSrc": "17174:15:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "17174:15:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "17209:1:3",
                              "nodeType": "YulLiteral",
                              "src": "17209:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "17212:4:3",
                              "nodeType": "YulLiteral",
                              "src": "17212:4:3",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "17202:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "17202:6:3"
                          },
                          "nativeSrc": "17202:15:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17202:15:3"
                        },
                        "nativeSrc": "17202:15:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "17202:15:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nativeSrc": "17072:18:3",
                        "nodeType": "YulIdentifier",
                        "src": "17072:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nativeSrc": "17095:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "17095:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "17103:2:3",
                            "nodeType": "YulLiteral",
                            "src": "17103:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "17092:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "17092:2:3"
                        },
                        "nativeSrc": "17092:14:3",
                        "nodeType": "YulFunctionCall",
                        "src": "17092:14:3"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nativeSrc": "17069:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "17069:2:3"
                    },
                    "nativeSrc": "17069:38:3",
                    "nodeType": "YulFunctionCall",
                    "src": "17069:38:3"
                  },
                  "nativeSrc": "17066:161:3",
                  "nodeType": "YulIf",
                  "src": "17066:161:3"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nativeSrc": "16853:380:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "16888:4:3",
                "nodeType": "YulTypedName",
                "src": "16888:4:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nativeSrc": "16897:6:3",
                "nodeType": "YulTypedName",
                "src": "16897:6:3",
                "type": ""
              }
            ],
            "src": "16853:380:3"
          },
          {
            "body": {
              "nativeSrc": "17294:65:3",
              "nodeType": "YulBlock",
              "src": "17294:65:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "17311:1:3",
                        "nodeType": "YulLiteral",
                        "src": "17311:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nativeSrc": "17314:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "17314:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "17304:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "17304:6:3"
                    },
                    "nativeSrc": "17304:14:3",
                    "nodeType": "YulFunctionCall",
                    "src": "17304:14:3"
                  },
                  "nativeSrc": "17304:14:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "17304:14:3"
                },
                {
                  "nativeSrc": "17327:26:3",
                  "nodeType": "YulAssignment",
                  "src": "17327:26:3",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "17345:1:3",
                        "nodeType": "YulLiteral",
                        "src": "17345:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17348:4:3",
                        "nodeType": "YulLiteral",
                        "src": "17348:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nativeSrc": "17335:9:3",
                      "nodeType": "YulIdentifier",
                      "src": "17335:9:3"
                    },
                    "nativeSrc": "17335:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "17335:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nativeSrc": "17327:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "17327:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nativeSrc": "17238:121:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "17277:3:3",
                "nodeType": "YulTypedName",
                "src": "17277:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nativeSrc": "17285:4:3",
                "nodeType": "YulTypedName",
                "src": "17285:4:3",
                "type": ""
              }
            ],
            "src": "17238:121:3"
          },
          {
            "body": {
              "nativeSrc": "17445:437:3",
              "nodeType": "YulBlock",
              "src": "17445:437:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "17478:398:3",
                    "nodeType": "YulBlock",
                    "src": "17478:398:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "17499:1:3",
                              "nodeType": "YulLiteral",
                              "src": "17499:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "name": "array",
                              "nativeSrc": "17502:5:3",
                              "nodeType": "YulIdentifier",
                              "src": "17502:5:3"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "17492:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "17492:6:3"
                          },
                          "nativeSrc": "17492:16:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17492:16:3"
                        },
                        "nativeSrc": "17492:16:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "17492:16:3"
                      },
                      {
                        "nativeSrc": "17521:30:3",
                        "nodeType": "YulVariableDeclaration",
                        "src": "17521:30:3",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "17543:1:3",
                              "nodeType": "YulLiteral",
                              "src": "17543:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "17546:4:3",
                              "nodeType": "YulLiteral",
                              "src": "17546:4:3",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nativeSrc": "17533:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "17533:9:3"
                          },
                          "nativeSrc": "17533:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17533:18:3"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nativeSrc": "17525:4:3",
                            "nodeType": "YulTypedName",
                            "src": "17525:4:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "17564:57:3",
                        "nodeType": "YulVariableDeclaration",
                        "src": "17564:57:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "17587:4:3",
                              "nodeType": "YulIdentifier",
                              "src": "17587:4:3"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "17597:1:3",
                                  "nodeType": "YulLiteral",
                                  "src": "17597:1:3",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nativeSrc": "17604:10:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "17604:10:3"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "17616:2:3",
                                      "nodeType": "YulLiteral",
                                      "src": "17616:2:3",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "17600:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17600:3:3"
                                  },
                                  "nativeSrc": "17600:19:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "17600:19:3"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "17593:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "17593:3:3"
                              },
                              "nativeSrc": "17593:27:3",
                              "nodeType": "YulFunctionCall",
                              "src": "17593:27:3"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "17583:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "17583:3:3"
                          },
                          "nativeSrc": "17583:38:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17583:38:3"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nativeSrc": "17568:11:3",
                            "nodeType": "YulTypedName",
                            "src": "17568:11:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "17658:23:3",
                          "nodeType": "YulBlock",
                          "src": "17658:23:3",
                          "statements": [
                            {
                              "nativeSrc": "17660:19:3",
                              "nodeType": "YulAssignment",
                              "src": "17660:19:3",
                              "value": {
                                "name": "data",
                                "nativeSrc": "17675:4:3",
                                "nodeType": "YulIdentifier",
                                "src": "17675:4:3"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nativeSrc": "17660:11:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17660:11:3"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nativeSrc": "17640:10:3",
                              "nodeType": "YulIdentifier",
                              "src": "17640:10:3"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "17652:4:3",
                              "nodeType": "YulLiteral",
                              "src": "17652:4:3",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "17637:2:3",
                            "nodeType": "YulIdentifier",
                            "src": "17637:2:3"
                          },
                          "nativeSrc": "17637:20:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17637:20:3"
                        },
                        "nativeSrc": "17634:47:3",
                        "nodeType": "YulIf",
                        "src": "17634:47:3"
                      },
                      {
                        "nativeSrc": "17694:41:3",
                        "nodeType": "YulVariableDeclaration",
                        "src": "17694:41:3",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nativeSrc": "17708:4:3",
                              "nodeType": "YulIdentifier",
                              "src": "17708:4:3"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "17718:1:3",
                                  "nodeType": "YulLiteral",
                                  "src": "17718:1:3",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nativeSrc": "17725:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "17725:3:3"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "17730:2:3",
                                      "nodeType": "YulLiteral",
                                      "src": "17730:2:3",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "17721:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17721:3:3"
                                  },
                                  "nativeSrc": "17721:12:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "17721:12:3"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nativeSrc": "17714:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "17714:3:3"
                              },
                              "nativeSrc": "17714:20:3",
                              "nodeType": "YulFunctionCall",
                              "src": "17714:20:3"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "17704:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "17704:3:3"
                          },
                          "nativeSrc": "17704:31:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17704:31:3"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nativeSrc": "17698:2:3",
                            "nodeType": "YulTypedName",
                            "src": "17698:2:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "17748:24:3",
                        "nodeType": "YulVariableDeclaration",
                        "src": "17748:24:3",
                        "value": {
                          "name": "deleteStart",
                          "nativeSrc": "17761:11:3",
                          "nodeType": "YulIdentifier",
                          "src": "17761:11:3"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nativeSrc": "17752:5:3",
                            "nodeType": "YulTypedName",
                            "src": "17752:5:3",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nativeSrc": "17846:20:3",
                          "nodeType": "YulBlock",
                          "src": "17846:20:3",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "17855:5:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17855:5:3"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17862:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "17862:1:3",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nativeSrc": "17848:6:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17848:6:3"
                                },
                                "nativeSrc": "17848:16:3",
                                "nodeType": "YulFunctionCall",
                                "src": "17848:16:3"
                              },
                              "nativeSrc": "17848:16:3",
                              "nodeType": "YulExpressionStatement",
                              "src": "17848:16:3"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nativeSrc": "17796:5:3",
                              "nodeType": "YulIdentifier",
                              "src": "17796:5:3"
                            },
                            {
                              "name": "_1",
                              "nativeSrc": "17803:2:3",
                              "nodeType": "YulIdentifier",
                              "src": "17803:2:3"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nativeSrc": "17793:2:3",
                            "nodeType": "YulIdentifier",
                            "src": "17793:2:3"
                          },
                          "nativeSrc": "17793:13:3",
                          "nodeType": "YulFunctionCall",
                          "src": "17793:13:3"
                        },
                        "nativeSrc": "17785:81:3",
                        "nodeType": "YulForLoop",
                        "post": {
                          "nativeSrc": "17807:26:3",
                          "nodeType": "YulBlock",
                          "src": "17807:26:3",
                          "statements": [
                            {
                              "nativeSrc": "17809:22:3",
                              "nodeType": "YulAssignment",
                              "src": "17809:22:3",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "17822:5:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17822:5:3"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17829:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "17829:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "17818:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17818:3:3"
                                },
                                "nativeSrc": "17818:13:3",
                                "nodeType": "YulFunctionCall",
                                "src": "17818:13:3"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nativeSrc": "17809:5:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17809:5:3"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nativeSrc": "17789:3:3",
                          "nodeType": "YulBlock",
                          "src": "17789:3:3",
                          "statements": []
                        },
                        "src": "17785:81:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "17461:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "17461:3:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "17466:2:3",
                        "nodeType": "YulLiteral",
                        "src": "17466:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "17458:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "17458:2:3"
                    },
                    "nativeSrc": "17458:11:3",
                    "nodeType": "YulFunctionCall",
                    "src": "17458:11:3"
                  },
                  "nativeSrc": "17455:421:3",
                  "nodeType": "YulIf",
                  "src": "17455:421:3"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nativeSrc": "17364:518:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nativeSrc": "17417:5:3",
                "nodeType": "YulTypedName",
                "src": "17417:5:3",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "17424:3:3",
                "nodeType": "YulTypedName",
                "src": "17424:3:3",
                "type": ""
              },
              {
                "name": "startIndex",
                "nativeSrc": "17429:10:3",
                "nodeType": "YulTypedName",
                "src": "17429:10:3",
                "type": ""
              }
            ],
            "src": "17364:518:3"
          },
          {
            "body": {
              "nativeSrc": "17972:81:3",
              "nodeType": "YulBlock",
              "src": "17972:81:3",
              "statements": [
                {
                  "nativeSrc": "17982:65:3",
                  "nodeType": "YulAssignment",
                  "src": "17982:65:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nativeSrc": "17997:4:3",
                            "nodeType": "YulIdentifier",
                            "src": "17997:4:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18015:1:3",
                                        "nodeType": "YulLiteral",
                                        "src": "18015:1:3",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nativeSrc": "18018:3:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18018:3:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "18011:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18011:3:3"
                                    },
                                    "nativeSrc": "18011:11:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18011:11:3"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18028:1:3",
                                        "nodeType": "YulLiteral",
                                        "src": "18028:1:3",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "18024:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18024:3:3"
                                    },
                                    "nativeSrc": "18024:6:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18024:6:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "18007:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18007:3:3"
                                },
                                "nativeSrc": "18007:24:3",
                                "nodeType": "YulFunctionCall",
                                "src": "18007:24:3"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "18003:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "18003:3:3"
                            },
                            "nativeSrc": "18003:29:3",
                            "nodeType": "YulFunctionCall",
                            "src": "18003:29:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "17993:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "17993:3:3"
                        },
                        "nativeSrc": "17993:40:3",
                        "nodeType": "YulFunctionCall",
                        "src": "17993:40:3"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "18039:1:3",
                            "nodeType": "YulLiteral",
                            "src": "18039:1:3",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nativeSrc": "18042:3:3",
                            "nodeType": "YulIdentifier",
                            "src": "18042:3:3"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "18035:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "18035:3:3"
                        },
                        "nativeSrc": "18035:11:3",
                        "nodeType": "YulFunctionCall",
                        "src": "18035:11:3"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "17990:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "17990:2:3"
                    },
                    "nativeSrc": "17990:57:3",
                    "nodeType": "YulFunctionCall",
                    "src": "17990:57:3"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nativeSrc": "17982:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "17982:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nativeSrc": "17887:166:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nativeSrc": "17949:4:3",
                "nodeType": "YulTypedName",
                "src": "17949:4:3",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "17955:3:3",
                "nodeType": "YulTypedName",
                "src": "17955:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nativeSrc": "17963:4:3",
                "nodeType": "YulTypedName",
                "src": "17963:4:3",
                "type": ""
              }
            ],
            "src": "17887:166:3"
          },
          {
            "body": {
              "nativeSrc": "18161:1095:3",
              "nodeType": "YulBlock",
              "src": "18161:1095:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "18202:22:3",
                    "nodeType": "YulBlock",
                    "src": "18202:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "18204:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "18204:16:3"
                          },
                          "nativeSrc": "18204:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "18204:18:3"
                        },
                        "nativeSrc": "18204:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "18204:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "18177:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "18177:3:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18182:18:3",
                        "nodeType": "YulLiteral",
                        "src": "18182:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "18174:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "18174:2:3"
                    },
                    "nativeSrc": "18174:27:3",
                    "nodeType": "YulFunctionCall",
                    "src": "18174:27:3"
                  },
                  "nativeSrc": "18171:53:3",
                  "nodeType": "YulIf",
                  "src": "18171:53:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "18277:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "18277:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nativeSrc": "18315:4:3",
                                "nodeType": "YulIdentifier",
                                "src": "18315:4:3"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nativeSrc": "18309:5:3",
                              "nodeType": "YulIdentifier",
                              "src": "18309:5:3"
                            },
                            "nativeSrc": "18309:11:3",
                            "nodeType": "YulFunctionCall",
                            "src": "18309:11:3"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nativeSrc": "18283:25:3",
                          "nodeType": "YulIdentifier",
                          "src": "18283:25:3"
                        },
                        "nativeSrc": "18283:38:3",
                        "nodeType": "YulFunctionCall",
                        "src": "18283:38:3"
                      },
                      {
                        "name": "len",
                        "nativeSrc": "18323:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "18323:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nativeSrc": "18233:43:3",
                      "nodeType": "YulIdentifier",
                      "src": "18233:43:3"
                    },
                    "nativeSrc": "18233:94:3",
                    "nodeType": "YulFunctionCall",
                    "src": "18233:94:3"
                  },
                  "nativeSrc": "18233:94:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "18233:94:3"
                },
                {
                  "nativeSrc": "18336:18:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "18336:18:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "18353:1:3",
                    "nodeType": "YulLiteral",
                    "src": "18353:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "18340:9:3",
                      "nodeType": "YulTypedName",
                      "src": "18340:9:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "18397:601:3",
                        "nodeType": "YulBlock",
                        "src": "18397:601:3",
                        "statements": [
                          {
                            "nativeSrc": "18411:32:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "18411:32:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "len",
                                  "nativeSrc": "18430:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18430:3:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "18439:2:3",
                                      "nodeType": "YulLiteral",
                                      "src": "18439:2:3",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "18435:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18435:3:3"
                                  },
                                  "nativeSrc": "18435:7:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "18435:7:3"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "18426:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "18426:3:3"
                              },
                              "nativeSrc": "18426:17:3",
                              "nodeType": "YulFunctionCall",
                              "src": "18426:17:3"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nativeSrc": "18415:7:3",
                                "nodeType": "YulTypedName",
                                "src": "18415:7:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "18456:49:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "18456:49:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "18500:4:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18500:4:3"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nativeSrc": "18470:29:3",
                                "nodeType": "YulIdentifier",
                                "src": "18470:29:3"
                              },
                              "nativeSrc": "18470:35:3",
                              "nodeType": "YulFunctionCall",
                              "src": "18470:35:3"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nativeSrc": "18460:6:3",
                                "nodeType": "YulTypedName",
                                "src": "18460:6:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "18518:10:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "18518:10:3",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "18527:1:3",
                              "nodeType": "YulLiteral",
                              "src": "18527:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "18522:1:3",
                                "nodeType": "YulTypedName",
                                "src": "18522:1:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "18598:172:3",
                              "nodeType": "YulBlock",
                              "src": "18598:172:3",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "18623:6:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18623:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nativeSrc": "18648:3:3",
                                                "nodeType": "YulIdentifier",
                                                "src": "18648:3:3"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nativeSrc": "18653:9:3",
                                                "nodeType": "YulIdentifier",
                                                "src": "18653:9:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "18644:3:3",
                                              "nodeType": "YulIdentifier",
                                              "src": "18644:3:3"
                                            },
                                            "nativeSrc": "18644:19:3",
                                            "nodeType": "YulFunctionCall",
                                            "src": "18644:19:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nativeSrc": "18631:12:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "18631:12:3"
                                        },
                                        "nativeSrc": "18631:33:3",
                                        "nodeType": "YulFunctionCall",
                                        "src": "18631:33:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "18616:6:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18616:6:3"
                                    },
                                    "nativeSrc": "18616:49:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18616:49:3"
                                  },
                                  "nativeSrc": "18616:49:3",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "18616:49:3"
                                },
                                {
                                  "nativeSrc": "18682:24:3",
                                  "nodeType": "YulAssignment",
                                  "src": "18682:24:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "18696:6:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18696:6:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18704:1:3",
                                        "nodeType": "YulLiteral",
                                        "src": "18704:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18692:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18692:3:3"
                                    },
                                    "nativeSrc": "18692:14:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18692:14:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nativeSrc": "18682:6:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18682:6:3"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "18723:33:3",
                                  "nodeType": "YulAssignment",
                                  "src": "18723:33:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nativeSrc": "18740:9:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18740:9:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18751:4:3",
                                        "nodeType": "YulLiteral",
                                        "src": "18751:4:3",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18736:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18736:3:3"
                                    },
                                    "nativeSrc": "18736:20:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18736:20:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nativeSrc": "18723:9:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18723:9:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "18552:1:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18552:1:3"
                                },
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "18555:7:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18555:7:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "18549:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "18549:2:3"
                              },
                              "nativeSrc": "18549:14:3",
                              "nodeType": "YulFunctionCall",
                              "src": "18549:14:3"
                            },
                            "nativeSrc": "18541:229:3",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "18564:21:3",
                              "nodeType": "YulBlock",
                              "src": "18564:21:3",
                              "statements": [
                                {
                                  "nativeSrc": "18566:17:3",
                                  "nodeType": "YulAssignment",
                                  "src": "18566:17:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "18575:1:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18575:1:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18578:4:3",
                                        "nodeType": "YulLiteral",
                                        "src": "18578:4:3",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18571:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18571:3:3"
                                    },
                                    "nativeSrc": "18571:12:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18571:12:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "18566:1:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18566:1:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "18545:3:3",
                              "nodeType": "YulBlock",
                              "src": "18545:3:3",
                              "statements": []
                            },
                            "src": "18541:229:3"
                          },
                          {
                            "body": {
                              "nativeSrc": "18815:127:3",
                              "nodeType": "YulBlock",
                              "src": "18815:127:3",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "18840:6:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18840:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src",
                                                    "nativeSrc": "18869:3:3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18869:3:3"
                                                  },
                                                  {
                                                    "name": "srcOffset",
                                                    "nativeSrc": "18874:9:3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18874:9:3"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "18865:3:3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18865:3:3"
                                                },
                                                "nativeSrc": "18865:19:3",
                                                "nodeType": "YulFunctionCall",
                                                "src": "18865:19:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nativeSrc": "18852:12:3",
                                              "nodeType": "YulIdentifier",
                                              "src": "18852:12:3"
                                            },
                                            "nativeSrc": "18852:33:3",
                                            "nodeType": "YulFunctionCall",
                                            "src": "18852:33:3"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "18903:1:3",
                                                            "nodeType": "YulLiteral",
                                                            "src": "18903:1:3",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "len",
                                                            "nativeSrc": "18906:3:3",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "18906:3:3"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nativeSrc": "18899:3:3",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "18899:3:3"
                                                        },
                                                        "nativeSrc": "18899:11:3",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "18899:11:3"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "18912:3:3",
                                                        "nodeType": "YulLiteral",
                                                        "src": "18912:3:3",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nativeSrc": "18895:3:3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18895:3:3"
                                                    },
                                                    "nativeSrc": "18895:21:3",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "18895:21:3"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "18922:1:3",
                                                        "nodeType": "YulLiteral",
                                                        "src": "18922:1:3",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nativeSrc": "18918:3:3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18918:3:3"
                                                    },
                                                    "nativeSrc": "18918:6:3",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "18918:6:3"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nativeSrc": "18891:3:3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18891:3:3"
                                                },
                                                "nativeSrc": "18891:34:3",
                                                "nodeType": "YulFunctionCall",
                                                "src": "18891:34:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nativeSrc": "18887:3:3",
                                              "nodeType": "YulIdentifier",
                                              "src": "18887:3:3"
                                            },
                                            "nativeSrc": "18887:39:3",
                                            "nodeType": "YulFunctionCall",
                                            "src": "18887:39:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nativeSrc": "18848:3:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "18848:3:3"
                                        },
                                        "nativeSrc": "18848:79:3",
                                        "nodeType": "YulFunctionCall",
                                        "src": "18848:79:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "18833:6:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "18833:6:3"
                                    },
                                    "nativeSrc": "18833:95:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18833:95:3"
                                  },
                                  "nativeSrc": "18833:95:3",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "18833:95:3"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "18789:7:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18789:7:3"
                                },
                                {
                                  "name": "len",
                                  "nativeSrc": "18798:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18798:3:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "18786:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "18786:2:3"
                              },
                              "nativeSrc": "18786:16:3",
                              "nodeType": "YulFunctionCall",
                              "src": "18786:16:3"
                            },
                            "nativeSrc": "18783:159:3",
                            "nodeType": "YulIf",
                            "src": "18783:159:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "18962:4:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18962:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "18976:1:3",
                                          "nodeType": "YulLiteral",
                                          "src": "18976:1:3",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "len",
                                          "nativeSrc": "18979:3:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "18979:3:3"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "18972:3:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18972:3:3"
                                      },
                                      "nativeSrc": "18972:11:3",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18972:11:3"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "18985:1:3",
                                      "nodeType": "YulLiteral",
                                      "src": "18985:1:3",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "18968:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18968:3:3"
                                  },
                                  "nativeSrc": "18968:19:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "18968:19:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "18955:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "18955:6:3"
                              },
                              "nativeSrc": "18955:33:3",
                              "nodeType": "YulFunctionCall",
                              "src": "18955:33:3"
                            },
                            "nativeSrc": "18955:33:3",
                            "nodeType": "YulExpressionStatement",
                            "src": "18955:33:3"
                          }
                        ]
                      },
                      "nativeSrc": "18390:608:3",
                      "nodeType": "YulCase",
                      "src": "18390:608:3",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "18395:1:3",
                        "nodeType": "YulLiteral",
                        "src": "18395:1:3",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "19015:235:3",
                        "nodeType": "YulBlock",
                        "src": "19015:235:3",
                        "statements": [
                          {
                            "nativeSrc": "19029:14:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "19029:14:3",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "19042:1:3",
                              "nodeType": "YulLiteral",
                              "src": "19042:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nativeSrc": "19033:5:3",
                                "nodeType": "YulTypedName",
                                "src": "19033:5:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "19075:74:3",
                              "nodeType": "YulBlock",
                              "src": "19075:74:3",
                              "statements": [
                                {
                                  "nativeSrc": "19093:42:3",
                                  "nodeType": "YulAssignment",
                                  "src": "19093:42:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "19119:3:3",
                                            "nodeType": "YulIdentifier",
                                            "src": "19119:3:3"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "19124:9:3",
                                            "nodeType": "YulIdentifier",
                                            "src": "19124:9:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "19115:3:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "19115:3:3"
                                        },
                                        "nativeSrc": "19115:19:3",
                                        "nodeType": "YulFunctionCall",
                                        "src": "19115:19:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nativeSrc": "19102:12:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "19102:12:3"
                                    },
                                    "nativeSrc": "19102:33:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19102:33:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "19093:5:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "19093:5:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "len",
                              "nativeSrc": "19059:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "19059:3:3"
                            },
                            "nativeSrc": "19056:93:3",
                            "nodeType": "YulIf",
                            "src": "19056:93:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "19169:4:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "19169:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nativeSrc": "19228:5:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "19228:5:3"
                                    },
                                    {
                                      "name": "len",
                                      "nativeSrc": "19235:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "19235:3:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nativeSrc": "19175:52:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "19175:52:3"
                                  },
                                  "nativeSrc": "19175:64:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "19175:64:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "19162:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "19162:6:3"
                              },
                              "nativeSrc": "19162:78:3",
                              "nodeType": "YulFunctionCall",
                              "src": "19162:78:3"
                            },
                            "nativeSrc": "19162:78:3",
                            "nodeType": "YulExpressionStatement",
                            "src": "19162:78:3"
                          }
                        ]
                      },
                      "nativeSrc": "19007:243:3",
                      "nodeType": "YulCase",
                      "src": "19007:243:3",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "len",
                        "nativeSrc": "18373:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "18373:3:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "18378:2:3",
                        "nodeType": "YulLiteral",
                        "src": "18378:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "18370:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "18370:2:3"
                    },
                    "nativeSrc": "18370:11:3",
                    "nodeType": "YulFunctionCall",
                    "src": "18370:11:3"
                  },
                  "nativeSrc": "18363:887:3",
                  "nodeType": "YulSwitch",
                  "src": "18363:887:3"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
            "nativeSrc": "18058:1198:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "18141:4:3",
                "nodeType": "YulTypedName",
                "src": "18141:4:3",
                "type": ""
              },
              {
                "name": "src",
                "nativeSrc": "18147:3:3",
                "nodeType": "YulTypedName",
                "src": "18147:3:3",
                "type": ""
              },
              {
                "name": "len",
                "nativeSrc": "18152:3:3",
                "nodeType": "YulTypedName",
                "src": "18152:3:3",
                "type": ""
              }
            ],
            "src": "18058:1198:3"
          },
          {
            "body": {
              "nativeSrc": "19330:115:3",
              "nodeType": "YulBlock",
              "src": "19330:115:3",
              "statements": [
                {
                  "nativeSrc": "19340:30:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "19340:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nativeSrc": "19366:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "19366:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "19353:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "19353:12:3"
                    },
                    "nativeSrc": "19353:17:3",
                    "nodeType": "YulFunctionCall",
                    "src": "19353:17:3"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "19344:5:3",
                      "nodeType": "YulTypedName",
                      "src": "19344:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "19404:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "19404:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "19379:24:3",
                      "nodeType": "YulIdentifier",
                      "src": "19379:24:3"
                    },
                    "nativeSrc": "19379:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "19379:31:3"
                  },
                  "nativeSrc": "19379:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "19379:31:3"
                },
                {
                  "nativeSrc": "19419:20:3",
                  "nodeType": "YulAssignment",
                  "src": "19419:20:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "19434:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "19434:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "returnValue",
                      "nativeSrc": "19419:11:3",
                      "nodeType": "YulIdentifier",
                      "src": "19419:11:3"
                    }
                  ]
                }
              ]
            },
            "name": "read_from_calldatat_address_payable",
            "nativeSrc": "19261:184:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "19306:3:3",
                "nodeType": "YulTypedName",
                "src": "19306:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "returnValue",
                "nativeSrc": "19314:11:3",
                "nodeType": "YulTypedName",
                "src": "19314:11:3",
                "type": ""
              }
            ],
            "src": "19261:184:3"
          },
          {
            "body": {
              "nativeSrc": "19539:121:3",
              "nodeType": "YulBlock",
              "src": "19539:121:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "19556:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "19556:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nativeSrc": "19575:4:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "19575:4:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nativeSrc": "19569:5:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "19569:5:3"
                                },
                                "nativeSrc": "19569:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "19569:11:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19586:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "19586:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19591:26:3",
                                    "nodeType": "YulLiteral",
                                    "src": "19591:26:3",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "19582:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "19582:3:3"
                                },
                                "nativeSrc": "19582:36:3",
                                "nodeType": "YulFunctionCall",
                                "src": "19582:36:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "19565:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "19565:3:3"
                            },
                            "nativeSrc": "19565:54:3",
                            "nodeType": "YulFunctionCall",
                            "src": "19565:54:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "19625:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "19625:5:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "19640:3:3",
                                        "nodeType": "YulLiteral",
                                        "src": "19640:3:3",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "19645:1:3",
                                        "nodeType": "YulLiteral",
                                        "src": "19645:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "19636:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "19636:3:3"
                                    },
                                    "nativeSrc": "19636:11:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19636:11:3"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19649:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "19649:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "19632:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "19632:3:3"
                                },
                                "nativeSrc": "19632:19:3",
                                "nodeType": "YulFunctionCall",
                                "src": "19632:19:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "19621:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "19621:3:3"
                            },
                            "nativeSrc": "19621:31:3",
                            "nodeType": "YulFunctionCall",
                            "src": "19621:31:3"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "19562:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "19562:2:3"
                        },
                        "nativeSrc": "19562:91:3",
                        "nodeType": "YulFunctionCall",
                        "src": "19562:91:3"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nativeSrc": "19549:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "19549:6:3"
                    },
                    "nativeSrc": "19549:105:3",
                    "nodeType": "YulFunctionCall",
                    "src": "19549:105:3"
                  },
                  "nativeSrc": "19549:105:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "19549:105:3"
                }
              ]
            },
            "name": "update_storage_value_offset_address_payable_to_address_payable",
            "nativeSrc": "19450:210:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "19522:4:3",
                "nodeType": "YulTypedName",
                "src": "19522:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nativeSrc": "19528:5:3",
                "nodeType": "YulTypedName",
                "src": "19528:5:3",
                "type": ""
              }
            ],
            "src": "19450:210:3"
          },
          {
            "body": {
              "nativeSrc": "19710:99:3",
              "nodeType": "YulBlock",
              "src": "19710:99:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "19787:16:3",
                    "nodeType": "YulBlock",
                    "src": "19787:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "19796:1:3",
                              "nodeType": "YulLiteral",
                              "src": "19796:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "19799:1:3",
                              "nodeType": "YulLiteral",
                              "src": "19799:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "19789:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "19789:6:3"
                          },
                          "nativeSrc": "19789:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "19789:12:3"
                        },
                        "nativeSrc": "19789:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "19789:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "19733:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "19733:5:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "19744:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "19744:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "19751:32:3",
                                "nodeType": "YulLiteral",
                                "src": "19751:32:3",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "19740:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "19740:3:3"
                            },
                            "nativeSrc": "19740:44:3",
                            "nodeType": "YulFunctionCall",
                            "src": "19740:44:3"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "19730:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "19730:2:3"
                        },
                        "nativeSrc": "19730:55:3",
                        "nodeType": "YulFunctionCall",
                        "src": "19730:55:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "19723:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "19723:6:3"
                    },
                    "nativeSrc": "19723:63:3",
                    "nodeType": "YulFunctionCall",
                    "src": "19723:63:3"
                  },
                  "nativeSrc": "19720:83:3",
                  "nodeType": "YulIf",
                  "src": "19720:83:3"
                }
              ]
            },
            "name": "validator_revert_uint120",
            "nativeSrc": "19665:144:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "19699:5:3",
                "nodeType": "YulTypedName",
                "src": "19699:5:3",
                "type": ""
              }
            ],
            "src": "19665:144:3"
          },
          {
            "body": {
              "nativeSrc": "19875:115:3",
              "nodeType": "YulBlock",
              "src": "19875:115:3",
              "statements": [
                {
                  "nativeSrc": "19885:30:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "19885:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nativeSrc": "19911:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "19911:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "19898:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "19898:12:3"
                    },
                    "nativeSrc": "19898:17:3",
                    "nodeType": "YulFunctionCall",
                    "src": "19898:17:3"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "19889:5:3",
                      "nodeType": "YulTypedName",
                      "src": "19889:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "19949:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "19949:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint120",
                      "nativeSrc": "19924:24:3",
                      "nodeType": "YulIdentifier",
                      "src": "19924:24:3"
                    },
                    "nativeSrc": "19924:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "19924:31:3"
                  },
                  "nativeSrc": "19924:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "19924:31:3"
                },
                {
                  "nativeSrc": "19964:20:3",
                  "nodeType": "YulAssignment",
                  "src": "19964:20:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "19979:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "19979:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "returnValue",
                      "nativeSrc": "19964:11:3",
                      "nodeType": "YulIdentifier",
                      "src": "19964:11:3"
                    }
                  ]
                }
              ]
            },
            "name": "read_from_calldatat_uint120",
            "nativeSrc": "19814:176:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "19851:3:3",
                "nodeType": "YulTypedName",
                "src": "19851:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "returnValue",
                "nativeSrc": "19859:11:3",
                "nodeType": "YulTypedName",
                "src": "19859:11:3",
                "type": ""
              }
            ],
            "src": "19814:176:3"
          },
          {
            "body": {
              "nativeSrc": "20068:135:3",
              "nodeType": "YulBlock",
              "src": "20068:135:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "20085:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "20085:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nativeSrc": "20104:4:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "20104:4:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nativeSrc": "20098:5:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20098:5:3"
                                },
                                "nativeSrc": "20098:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20098:11:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20115:32:3",
                                    "nodeType": "YulLiteral",
                                    "src": "20115:32:3",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "20111:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20111:3:3"
                                },
                                "nativeSrc": "20111:37:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20111:37:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "20094:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "20094:3:3"
                            },
                            "nativeSrc": "20094:55:3",
                            "nodeType": "YulFunctionCall",
                            "src": "20094:55:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "20155:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "20155:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "20162:32:3",
                                "nodeType": "YulLiteral",
                                "src": "20162:32:3",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "20151:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "20151:3:3"
                            },
                            "nativeSrc": "20151:44:3",
                            "nodeType": "YulFunctionCall",
                            "src": "20151:44:3"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "20091:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "20091:2:3"
                        },
                        "nativeSrc": "20091:105:3",
                        "nodeType": "YulFunctionCall",
                        "src": "20091:105:3"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nativeSrc": "20078:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "20078:6:3"
                    },
                    "nativeSrc": "20078:119:3",
                    "nodeType": "YulFunctionCall",
                    "src": "20078:119:3"
                  },
                  "nativeSrc": "20078:119:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "20078:119:3"
                }
              ]
            },
            "name": "update_storage_value_offset_uint120_to_uint120",
            "nativeSrc": "19995:208:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "20051:4:3",
                "nodeType": "YulTypedName",
                "src": "20051:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nativeSrc": "20057:5:3",
                "nodeType": "YulTypedName",
                "src": "20057:5:3",
                "type": ""
              }
            ],
            "src": "19995:208:3"
          },
          {
            "body": {
              "nativeSrc": "20285:186:3",
              "nodeType": "YulBlock",
              "src": "20285:186:3",
              "statements": [
                {
                  "nativeSrc": "20295:21:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "20295:21:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "20311:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "20311:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nativeSrc": "20305:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "20305:5:3"
                    },
                    "nativeSrc": "20305:11:3",
                    "nodeType": "YulFunctionCall",
                    "src": "20305:11:3"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "20299:2:3",
                      "nodeType": "YulTypedName",
                      "src": "20299:2:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "20332:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "20332:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "20345:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "20345:2:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "20357:3:3",
                                        "nodeType": "YulLiteral",
                                        "src": "20357:3:3",
                                        "type": "",
                                        "value": "120"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "20362:32:3",
                                        "nodeType": "YulLiteral",
                                        "src": "20362:32:3",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "20353:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "20353:3:3"
                                    },
                                    "nativeSrc": "20353:42:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20353:42:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "20349:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20349:3:3"
                                },
                                "nativeSrc": "20349:47:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20349:47:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "20341:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "20341:3:3"
                            },
                            "nativeSrc": "20341:56:3",
                            "nodeType": "YulFunctionCall",
                            "src": "20341:56:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20407:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "20407:3:3",
                                    "type": "",
                                    "value": "120"
                                  },
                                  {
                                    "name": "value",
                                    "nativeSrc": "20412:5:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "20412:5:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "20403:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20403:3:3"
                                },
                                "nativeSrc": "20403:15:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20403:15:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20424:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "20424:3:3",
                                    "type": "",
                                    "value": "120"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20429:32:3",
                                    "nodeType": "YulLiteral",
                                    "src": "20429:32:3",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "20420:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20420:3:3"
                                },
                                "nativeSrc": "20420:42:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20420:42:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "20399:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "20399:3:3"
                            },
                            "nativeSrc": "20399:64:3",
                            "nodeType": "YulFunctionCall",
                            "src": "20399:64:3"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "20338:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "20338:2:3"
                        },
                        "nativeSrc": "20338:126:3",
                        "nodeType": "YulFunctionCall",
                        "src": "20338:126:3"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nativeSrc": "20325:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "20325:6:3"
                    },
                    "nativeSrc": "20325:140:3",
                    "nodeType": "YulFunctionCall",
                    "src": "20325:140:3"
                  },
                  "nativeSrc": "20325:140:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "20325:140:3"
                }
              ]
            },
            "name": "update_storage_value_offset_t_uint120_to_t_uint120",
            "nativeSrc": "20208:263:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "20268:4:3",
                "nodeType": "YulTypedName",
                "src": "20268:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nativeSrc": "20274:5:3",
                "nodeType": "YulTypedName",
                "src": "20274:5:3",
                "type": ""
              }
            ],
            "src": "20208:263:3"
          },
          {
            "body": {
              "nativeSrc": "20534:112:3",
              "nodeType": "YulBlock",
              "src": "20534:112:3",
              "statements": [
                {
                  "nativeSrc": "20544:30:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "20544:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nativeSrc": "20570:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "20570:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "20557:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "20557:12:3"
                    },
                    "nativeSrc": "20557:17:3",
                    "nodeType": "YulFunctionCall",
                    "src": "20557:17:3"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "20548:5:3",
                      "nodeType": "YulTypedName",
                      "src": "20548:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "20605:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "20605:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nativeSrc": "20583:21:3",
                      "nodeType": "YulIdentifier",
                      "src": "20583:21:3"
                    },
                    "nativeSrc": "20583:28:3",
                    "nodeType": "YulFunctionCall",
                    "src": "20583:28:3"
                  },
                  "nativeSrc": "20583:28:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "20583:28:3"
                },
                {
                  "nativeSrc": "20620:20:3",
                  "nodeType": "YulAssignment",
                  "src": "20620:20:3",
                  "value": {
                    "name": "value",
                    "nativeSrc": "20635:5:3",
                    "nodeType": "YulIdentifier",
                    "src": "20635:5:3"
                  },
                  "variableNames": [
                    {
                      "name": "returnValue",
                      "nativeSrc": "20620:11:3",
                      "nodeType": "YulIdentifier",
                      "src": "20620:11:3"
                    }
                  ]
                }
              ]
            },
            "name": "read_from_calldatat_bool",
            "nativeSrc": "20476:170:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nativeSrc": "20510:3:3",
                "nodeType": "YulTypedName",
                "src": "20510:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "returnValue",
                "nativeSrc": "20518:11:3",
                "nodeType": "YulTypedName",
                "src": "20518:11:3",
                "type": ""
              }
            ],
            "src": "20476:170:3"
          },
          {
            "body": {
              "nativeSrc": "20718:144:3",
              "nodeType": "YulBlock",
              "src": "20718:144:3",
              "statements": [
                {
                  "nativeSrc": "20728:21:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "20728:21:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "20744:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "20744:4:3"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nativeSrc": "20738:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "20738:5:3"
                    },
                    "nativeSrc": "20738:11:3",
                    "nodeType": "YulFunctionCall",
                    "src": "20738:11:3"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "20732:2:3",
                      "nodeType": "YulTypedName",
                      "src": "20732:2:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "20765:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "20765:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "20778:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "20778:2:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "20790:3:3",
                                        "nodeType": "YulLiteral",
                                        "src": "20790:3:3",
                                        "type": "",
                                        "value": "240"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "20795:3:3",
                                        "nodeType": "YulLiteral",
                                        "src": "20795:3:3",
                                        "type": "",
                                        "value": "255"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "20786:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "20786:3:3"
                                    },
                                    "nativeSrc": "20786:13:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20786:13:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "20782:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20782:3:3"
                                },
                                "nativeSrc": "20782:18:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20782:18:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "20774:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "20774:3:3"
                            },
                            "nativeSrc": "20774:27:3",
                            "nodeType": "YulFunctionCall",
                            "src": "20774:27:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20811:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "20811:3:3",
                                    "type": "",
                                    "value": "240"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nativeSrc": "20830:5:3",
                                            "nodeType": "YulIdentifier",
                                            "src": "20830:5:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nativeSrc": "20823:6:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "20823:6:3"
                                        },
                                        "nativeSrc": "20823:13:3",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20823:13:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nativeSrc": "20816:6:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "20816:6:3"
                                    },
                                    "nativeSrc": "20816:21:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20816:21:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "20807:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20807:3:3"
                                },
                                "nativeSrc": "20807:31:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20807:31:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20844:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "20844:3:3",
                                    "type": "",
                                    "value": "240"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20849:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "20849:3:3",
                                    "type": "",
                                    "value": "255"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "20840:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "20840:3:3"
                                },
                                "nativeSrc": "20840:13:3",
                                "nodeType": "YulFunctionCall",
                                "src": "20840:13:3"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "20803:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "20803:3:3"
                            },
                            "nativeSrc": "20803:51:3",
                            "nodeType": "YulFunctionCall",
                            "src": "20803:51:3"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "20771:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "20771:2:3"
                        },
                        "nativeSrc": "20771:84:3",
                        "nodeType": "YulFunctionCall",
                        "src": "20771:84:3"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nativeSrc": "20758:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "20758:6:3"
                    },
                    "nativeSrc": "20758:98:3",
                    "nodeType": "YulFunctionCall",
                    "src": "20758:98:3"
                  },
                  "nativeSrc": "20758:98:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "20758:98:3"
                }
              ]
            },
            "name": "update_storage_value_offset_bool_to_bool",
            "nativeSrc": "20651:211:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "20701:4:3",
                "nodeType": "YulTypedName",
                "src": "20701:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nativeSrc": "20707:5:3",
                "nodeType": "YulTypedName",
                "src": "20707:5:3",
                "type": ""
              }
            ],
            "src": "20651:211:3"
          },
          {
            "body": {
              "nativeSrc": "20983:2311:3",
              "nodeType": "YulBlock",
              "src": "20983:2311:3",
              "statements": [
                {
                  "nativeSrc": "20993:90:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "20993:90:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "21070:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "21070:5:3"
                      },
                      {
                        "name": "value",
                        "nativeSrc": "21077:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "21077:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "access_calldata_tail_t_string_calldata_ptr",
                      "nativeSrc": "21027:42:3",
                      "nodeType": "YulIdentifier",
                      "src": "21027:42:3"
                    },
                    "nativeSrc": "21027:56:3",
                    "nodeType": "YulFunctionCall",
                    "src": "21027:56:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue",
                      "nativeSrc": "20997:11:3",
                      "nodeType": "YulTypedName",
                      "src": "20997:11:3",
                      "type": ""
                    },
                    {
                      "name": "memberValue_1",
                      "nativeSrc": "21010:13:3",
                      "nodeType": "YulTypedName",
                      "src": "21010:13:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "21133:22:3",
                    "nodeType": "YulBlock",
                    "src": "21133:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "21135:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "21135:16:3"
                          },
                          "nativeSrc": "21135:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "21135:18:3"
                        },
                        "nativeSrc": "21135:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "21135:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "memberValue_1",
                        "nativeSrc": "21098:13:3",
                        "nodeType": "YulIdentifier",
                        "src": "21098:13:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "21113:18:3",
                        "nodeType": "YulLiteral",
                        "src": "21113:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "21095:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "21095:2:3"
                    },
                    "nativeSrc": "21095:37:3",
                    "nodeType": "YulFunctionCall",
                    "src": "21095:37:3"
                  },
                  "nativeSrc": "21092:63:3",
                  "nodeType": "YulIf",
                  "src": "21092:63:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "21208:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "21208:4:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nativeSrc": "21246:4:3",
                                "nodeType": "YulIdentifier",
                                "src": "21246:4:3"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nativeSrc": "21240:5:3",
                              "nodeType": "YulIdentifier",
                              "src": "21240:5:3"
                            },
                            "nativeSrc": "21240:11:3",
                            "nodeType": "YulFunctionCall",
                            "src": "21240:11:3"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nativeSrc": "21214:25:3",
                          "nodeType": "YulIdentifier",
                          "src": "21214:25:3"
                        },
                        "nativeSrc": "21214:38:3",
                        "nodeType": "YulFunctionCall",
                        "src": "21214:38:3"
                      },
                      {
                        "name": "memberValue_1",
                        "nativeSrc": "21254:13:3",
                        "nodeType": "YulIdentifier",
                        "src": "21254:13:3"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nativeSrc": "21164:43:3",
                      "nodeType": "YulIdentifier",
                      "src": "21164:43:3"
                    },
                    "nativeSrc": "21164:104:3",
                    "nodeType": "YulFunctionCall",
                    "src": "21164:104:3"
                  },
                  "nativeSrc": "21164:104:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "21164:104:3"
                },
                {
                  "nativeSrc": "21277:18:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "21277:18:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "21294:1:3",
                    "nodeType": "YulLiteral",
                    "src": "21294:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nativeSrc": "21281:9:3",
                      "nodeType": "YulTypedName",
                      "src": "21281:9:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nativeSrc": "21348:657:3",
                        "nodeType": "YulBlock",
                        "src": "21348:657:3",
                        "statements": [
                          {
                            "nativeSrc": "21362:42:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "21362:42:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "memberValue_1",
                                  "nativeSrc": "21381:13:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21381:13:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nativeSrc": "21400:2:3",
                                      "nodeType": "YulLiteral",
                                      "src": "21400:2:3",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nativeSrc": "21396:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "21396:3:3"
                                  },
                                  "nativeSrc": "21396:7:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "21396:7:3"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nativeSrc": "21377:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "21377:3:3"
                              },
                              "nativeSrc": "21377:27:3",
                              "nodeType": "YulFunctionCall",
                              "src": "21377:27:3"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nativeSrc": "21366:7:3",
                                "nodeType": "YulTypedName",
                                "src": "21366:7:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "21417:49:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "21417:49:3",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "21461:4:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21461:4:3"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nativeSrc": "21431:29:3",
                                "nodeType": "YulIdentifier",
                                "src": "21431:29:3"
                              },
                              "nativeSrc": "21431:35:3",
                              "nodeType": "YulFunctionCall",
                              "src": "21431:35:3"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nativeSrc": "21421:6:3",
                                "nodeType": "YulTypedName",
                                "src": "21421:6:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nativeSrc": "21479:10:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "21479:10:3",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "21488:1:3",
                              "nodeType": "YulLiteral",
                              "src": "21488:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nativeSrc": "21483:1:3",
                                "nodeType": "YulTypedName",
                                "src": "21483:1:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "21559:180:3",
                              "nodeType": "YulBlock",
                              "src": "21559:180:3",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "21584:6:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21584:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "memberValue",
                                                "nativeSrc": "21609:11:3",
                                                "nodeType": "YulIdentifier",
                                                "src": "21609:11:3"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nativeSrc": "21622:9:3",
                                                "nodeType": "YulIdentifier",
                                                "src": "21622:9:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nativeSrc": "21605:3:3",
                                              "nodeType": "YulIdentifier",
                                              "src": "21605:3:3"
                                            },
                                            "nativeSrc": "21605:27:3",
                                            "nodeType": "YulFunctionCall",
                                            "src": "21605:27:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nativeSrc": "21592:12:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "21592:12:3"
                                        },
                                        "nativeSrc": "21592:41:3",
                                        "nodeType": "YulFunctionCall",
                                        "src": "21592:41:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "21577:6:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21577:6:3"
                                    },
                                    "nativeSrc": "21577:57:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21577:57:3"
                                  },
                                  "nativeSrc": "21577:57:3",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "21577:57:3"
                                },
                                {
                                  "nativeSrc": "21651:24:3",
                                  "nodeType": "YulAssignment",
                                  "src": "21651:24:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "21665:6:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21665:6:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "21673:1:3",
                                        "nodeType": "YulLiteral",
                                        "src": "21673:1:3",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "21661:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21661:3:3"
                                    },
                                    "nativeSrc": "21661:14:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21661:14:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nativeSrc": "21651:6:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21651:6:3"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "21692:33:3",
                                  "nodeType": "YulAssignment",
                                  "src": "21692:33:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nativeSrc": "21709:9:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21709:9:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "21720:4:3",
                                        "nodeType": "YulLiteral",
                                        "src": "21720:4:3",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "21705:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21705:3:3"
                                    },
                                    "nativeSrc": "21705:20:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21705:20:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nativeSrc": "21692:9:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21692:9:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nativeSrc": "21513:1:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21513:1:3"
                                },
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "21516:7:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21516:7:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "21510:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "21510:2:3"
                              },
                              "nativeSrc": "21510:14:3",
                              "nodeType": "YulFunctionCall",
                              "src": "21510:14:3"
                            },
                            "nativeSrc": "21502:237:3",
                            "nodeType": "YulForLoop",
                            "post": {
                              "nativeSrc": "21525:21:3",
                              "nodeType": "YulBlock",
                              "src": "21525:21:3",
                              "statements": [
                                {
                                  "nativeSrc": "21527:17:3",
                                  "nodeType": "YulAssignment",
                                  "src": "21527:17:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "21536:1:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21536:1:3"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "21539:4:3",
                                        "nodeType": "YulLiteral",
                                        "src": "21539:4:3",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "21532:3:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21532:3:3"
                                    },
                                    "nativeSrc": "21532:12:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21532:12:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nativeSrc": "21527:1:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21527:1:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nativeSrc": "21506:3:3",
                              "nodeType": "YulBlock",
                              "src": "21506:3:3",
                              "statements": []
                            },
                            "src": "21502:237:3"
                          },
                          {
                            "body": {
                              "nativeSrc": "21794:145:3",
                              "nodeType": "YulBlock",
                              "src": "21794:145:3",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nativeSrc": "21819:6:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21819:6:3"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "memberValue",
                                                    "nativeSrc": "21848:11:3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "21848:11:3"
                                                  },
                                                  {
                                                    "name": "srcOffset",
                                                    "nativeSrc": "21861:9:3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "21861:9:3"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "21844:3:3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "21844:3:3"
                                                },
                                                "nativeSrc": "21844:27:3",
                                                "nodeType": "YulFunctionCall",
                                                "src": "21844:27:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nativeSrc": "21831:12:3",
                                              "nodeType": "YulIdentifier",
                                              "src": "21831:12:3"
                                            },
                                            "nativeSrc": "21831:41:3",
                                            "nodeType": "YulFunctionCall",
                                            "src": "21831:41:3"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "21890:1:3",
                                                            "nodeType": "YulLiteral",
                                                            "src": "21890:1:3",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "memberValue_1",
                                                            "nativeSrc": "21893:13:3",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "21893:13:3"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nativeSrc": "21886:3:3",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "21886:3:3"
                                                        },
                                                        "nativeSrc": "21886:21:3",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "21886:21:3"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "21909:3:3",
                                                        "nodeType": "YulLiteral",
                                                        "src": "21909:3:3",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nativeSrc": "21882:3:3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "21882:3:3"
                                                    },
                                                    "nativeSrc": "21882:31:3",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "21882:31:3"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nativeSrc": "21919:1:3",
                                                        "nodeType": "YulLiteral",
                                                        "src": "21919:1:3",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nativeSrc": "21915:3:3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "21915:3:3"
                                                    },
                                                    "nativeSrc": "21915:6:3",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "21915:6:3"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nativeSrc": "21878:3:3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "21878:3:3"
                                                },
                                                "nativeSrc": "21878:44:3",
                                                "nodeType": "YulFunctionCall",
                                                "src": "21878:44:3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nativeSrc": "21874:3:3",
                                              "nodeType": "YulIdentifier",
                                              "src": "21874:3:3"
                                            },
                                            "nativeSrc": "21874:49:3",
                                            "nodeType": "YulFunctionCall",
                                            "src": "21874:49:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nativeSrc": "21827:3:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "21827:3:3"
                                        },
                                        "nativeSrc": "21827:97:3",
                                        "nodeType": "YulFunctionCall",
                                        "src": "21827:97:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nativeSrc": "21812:6:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "21812:6:3"
                                    },
                                    "nativeSrc": "21812:113:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "21812:113:3"
                                  },
                                  "nativeSrc": "21812:113:3",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "21812:113:3"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nativeSrc": "21758:7:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21758:7:3"
                                },
                                {
                                  "name": "memberValue_1",
                                  "nativeSrc": "21767:13:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21767:13:3"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nativeSrc": "21755:2:3",
                                "nodeType": "YulIdentifier",
                                "src": "21755:2:3"
                              },
                              "nativeSrc": "21755:26:3",
                              "nodeType": "YulFunctionCall",
                              "src": "21755:26:3"
                            },
                            "nativeSrc": "21752:187:3",
                            "nodeType": "YulIf",
                            "src": "21752:187:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "21959:4:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21959:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "21973:1:3",
                                          "nodeType": "YulLiteral",
                                          "src": "21973:1:3",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "memberValue_1",
                                          "nativeSrc": "21976:13:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "21976:13:3"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nativeSrc": "21969:3:3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21969:3:3"
                                      },
                                      "nativeSrc": "21969:21:3",
                                      "nodeType": "YulFunctionCall",
                                      "src": "21969:21:3"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "21992:1:3",
                                      "nodeType": "YulLiteral",
                                      "src": "21992:1:3",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "21965:3:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "21965:3:3"
                                  },
                                  "nativeSrc": "21965:29:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "21965:29:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "21952:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "21952:6:3"
                              },
                              "nativeSrc": "21952:43:3",
                              "nodeType": "YulFunctionCall",
                              "src": "21952:43:3"
                            },
                            "nativeSrc": "21952:43:3",
                            "nodeType": "YulExpressionStatement",
                            "src": "21952:43:3"
                          }
                        ]
                      },
                      "nativeSrc": "21341:664:3",
                      "nodeType": "YulCase",
                      "src": "21341:664:3",
                      "value": {
                        "kind": "number",
                        "nativeSrc": "21346:1:3",
                        "nodeType": "YulLiteral",
                        "src": "21346:1:3",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nativeSrc": "22022:269:3",
                        "nodeType": "YulBlock",
                        "src": "22022:269:3",
                        "statements": [
                          {
                            "nativeSrc": "22036:16:3",
                            "nodeType": "YulVariableDeclaration",
                            "src": "22036:16:3",
                            "value": {
                              "kind": "number",
                              "nativeSrc": "22051:1:3",
                              "nodeType": "YulLiteral",
                              "src": "22051:1:3",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value_1",
                                "nativeSrc": "22040:7:3",
                                "nodeType": "YulTypedName",
                                "src": "22040:7:3",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nativeSrc": "22094:84:3",
                              "nodeType": "YulBlock",
                              "src": "22094:84:3",
                              "statements": [
                                {
                                  "nativeSrc": "22112:52:3",
                                  "nodeType": "YulAssignment",
                                  "src": "22112:52:3",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue",
                                            "nativeSrc": "22140:11:3",
                                            "nodeType": "YulIdentifier",
                                            "src": "22140:11:3"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nativeSrc": "22153:9:3",
                                            "nodeType": "YulIdentifier",
                                            "src": "22153:9:3"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "22136:3:3",
                                          "nodeType": "YulIdentifier",
                                          "src": "22136:3:3"
                                        },
                                        "nativeSrc": "22136:27:3",
                                        "nodeType": "YulFunctionCall",
                                        "src": "22136:27:3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nativeSrc": "22123:12:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "22123:12:3"
                                    },
                                    "nativeSrc": "22123:41:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "22123:41:3"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value_1",
                                      "nativeSrc": "22112:7:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "22112:7:3"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "memberValue_1",
                              "nativeSrc": "22068:13:3",
                              "nodeType": "YulIdentifier",
                              "src": "22068:13:3"
                            },
                            "nativeSrc": "22065:113:3",
                            "nodeType": "YulIf",
                            "src": "22065:113:3"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nativeSrc": "22198:4:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "22198:4:3"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value_1",
                                      "nativeSrc": "22257:7:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "22257:7:3"
                                    },
                                    {
                                      "name": "memberValue_1",
                                      "nativeSrc": "22266:13:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "22266:13:3"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nativeSrc": "22204:52:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "22204:52:3"
                                  },
                                  "nativeSrc": "22204:76:3",
                                  "nodeType": "YulFunctionCall",
                                  "src": "22204:76:3"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nativeSrc": "22191:6:3",
                                "nodeType": "YulIdentifier",
                                "src": "22191:6:3"
                              },
                              "nativeSrc": "22191:90:3",
                              "nodeType": "YulFunctionCall",
                              "src": "22191:90:3"
                            },
                            "nativeSrc": "22191:90:3",
                            "nodeType": "YulExpressionStatement",
                            "src": "22191:90:3"
                          }
                        ]
                      },
                      "nativeSrc": "22014:277:3",
                      "nodeType": "YulCase",
                      "src": "22014:277:3",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberValue_1",
                        "nativeSrc": "21314:13:3",
                        "nodeType": "YulIdentifier",
                        "src": "21314:13:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "21329:2:3",
                        "nodeType": "YulLiteral",
                        "src": "21329:2:3",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "21311:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "21311:2:3"
                    },
                    "nativeSrc": "21311:21:3",
                    "nodeType": "YulFunctionCall",
                    "src": "21311:21:3"
                  },
                  "nativeSrc": "21304:987:3",
                  "nodeType": "YulSwitch",
                  "src": "21304:987:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "slot",
                            "nativeSrc": "22367:4:3",
                            "nodeType": "YulIdentifier",
                            "src": "22367:4:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22373:1:3",
                            "nodeType": "YulLiteral",
                            "src": "22373:1:3",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22363:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "22363:3:3"
                        },
                        "nativeSrc": "22363:12:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22363:12:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "22417:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "22417:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "22424:2:3",
                                "nodeType": "YulLiteral",
                                "src": "22424:2:3",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "22413:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "22413:3:3"
                            },
                            "nativeSrc": "22413:14:3",
                            "nodeType": "YulFunctionCall",
                            "src": "22413:14:3"
                          }
                        ],
                        "functionName": {
                          "name": "read_from_calldatat_address_payable",
                          "nativeSrc": "22377:35:3",
                          "nodeType": "YulIdentifier",
                          "src": "22377:35:3"
                        },
                        "nativeSrc": "22377:51:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22377:51:3"
                      }
                    ],
                    "functionName": {
                      "name": "update_storage_value_offset_address_payable_to_address_payable",
                      "nativeSrc": "22300:62:3",
                      "nodeType": "YulIdentifier",
                      "src": "22300:62:3"
                    },
                    "nativeSrc": "22300:129:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22300:129:3"
                  },
                  "nativeSrc": "22300:129:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "22300:129:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "slot",
                            "nativeSrc": "22505:4:3",
                            "nodeType": "YulIdentifier",
                            "src": "22505:4:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22511:1:3",
                            "nodeType": "YulLiteral",
                            "src": "22511:1:3",
                            "type": "",
                            "value": "2"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22501:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "22501:3:3"
                        },
                        "nativeSrc": "22501:12:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22501:12:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "22555:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "22555:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "22562:2:3",
                                "nodeType": "YulLiteral",
                                "src": "22562:2:3",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "22551:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "22551:3:3"
                            },
                            "nativeSrc": "22551:14:3",
                            "nodeType": "YulFunctionCall",
                            "src": "22551:14:3"
                          }
                        ],
                        "functionName": {
                          "name": "read_from_calldatat_address_payable",
                          "nativeSrc": "22515:35:3",
                          "nodeType": "YulIdentifier",
                          "src": "22515:35:3"
                        },
                        "nativeSrc": "22515:51:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22515:51:3"
                      }
                    ],
                    "functionName": {
                      "name": "update_storage_value_offset_address_payable_to_address_payable",
                      "nativeSrc": "22438:62:3",
                      "nodeType": "YulIdentifier",
                      "src": "22438:62:3"
                    },
                    "nativeSrc": "22438:129:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22438:129:3"
                  },
                  "nativeSrc": "22438:129:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "22438:129:3"
                },
                {
                  "nativeSrc": "22576:101:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "22576:101:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "22655:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "22655:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "22666:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "22666:5:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22673:2:3",
                            "nodeType": "YulLiteral",
                            "src": "22673:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22662:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "22662:3:3"
                        },
                        "nativeSrc": "22662:14:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22662:14:3"
                      }
                    ],
                    "functionName": {
                      "name": "access_calldata_tail_t_string_calldata_ptr",
                      "nativeSrc": "22612:42:3",
                      "nodeType": "YulIdentifier",
                      "src": "22612:42:3"
                    },
                    "nativeSrc": "22612:65:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22612:65:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue_2",
                      "nativeSrc": "22580:13:3",
                      "nodeType": "YulTypedName",
                      "src": "22580:13:3",
                      "type": ""
                    },
                    {
                      "name": "memberValue_3",
                      "nativeSrc": "22595:13:3",
                      "nodeType": "YulTypedName",
                      "src": "22595:13:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "slot",
                            "nativeSrc": "22764:4:3",
                            "nodeType": "YulIdentifier",
                            "src": "22764:4:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22770:1:3",
                            "nodeType": "YulLiteral",
                            "src": "22770:1:3",
                            "type": "",
                            "value": "3"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22760:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "22760:3:3"
                        },
                        "nativeSrc": "22760:12:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22760:12:3"
                      },
                      {
                        "name": "memberValue_2",
                        "nativeSrc": "22774:13:3",
                        "nodeType": "YulIdentifier",
                        "src": "22774:13:3"
                      },
                      {
                        "name": "memberValue_3",
                        "nativeSrc": "22789:13:3",
                        "nodeType": "YulIdentifier",
                        "src": "22789:13:3"
                      }
                    ],
                    "functionName": {
                      "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
                      "nativeSrc": "22686:73:3",
                      "nodeType": "YulIdentifier",
                      "src": "22686:73:3"
                    },
                    "nativeSrc": "22686:117:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22686:117:3"
                  },
                  "nativeSrc": "22686:117:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "22686:117:3"
                },
                {
                  "nativeSrc": "22812:16:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "22812:16:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "22827:1:3",
                    "nodeType": "YulLiteral",
                    "src": "22827:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nativeSrc": "22816:7:3",
                      "nodeType": "YulTypedName",
                      "src": "22816:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "22837:40:3",
                  "nodeType": "YulAssignment",
                  "src": "22837:40:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "22865:5:3",
                            "nodeType": "YulIdentifier",
                            "src": "22865:5:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22872:3:3",
                            "nodeType": "YulLiteral",
                            "src": "22872:3:3",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22861:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "22861:3:3"
                        },
                        "nativeSrc": "22861:15:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22861:15:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "22848:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "22848:12:3"
                    },
                    "nativeSrc": "22848:29:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22848:29:3"
                  },
                  "variableNames": [
                    {
                      "name": "value_2",
                      "nativeSrc": "22837:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "22837:7:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "slot",
                            "nativeSrc": "22897:4:3",
                            "nodeType": "YulIdentifier",
                            "src": "22897:4:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "22903:1:3",
                            "nodeType": "YulLiteral",
                            "src": "22903:1:3",
                            "type": "",
                            "value": "4"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "22893:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "22893:3:3"
                        },
                        "nativeSrc": "22893:12:3",
                        "nodeType": "YulFunctionCall",
                        "src": "22893:12:3"
                      },
                      {
                        "name": "value_2",
                        "nativeSrc": "22907:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "22907:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nativeSrc": "22886:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "22886:6:3"
                    },
                    "nativeSrc": "22886:29:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22886:29:3"
                  },
                  "nativeSrc": "22886:29:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "22886:29:3"
                },
                {
                  "nativeSrc": "22924:30:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "22924:30:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nativeSrc": "22946:4:3",
                        "nodeType": "YulIdentifier",
                        "src": "22946:4:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "22952:1:3",
                        "nodeType": "YulLiteral",
                        "src": "22952:1:3",
                        "type": "",
                        "value": "5"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "22942:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "22942:3:3"
                    },
                    "nativeSrc": "22942:12:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22942:12:3"
                  },
                  "variables": [
                    {
                      "name": "memberSlot",
                      "nativeSrc": "22928:10:3",
                      "nodeType": "YulTypedName",
                      "src": "22928:10:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberSlot",
                        "nativeSrc": "23010:10:3",
                        "nodeType": "YulIdentifier",
                        "src": "23010:10:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "23054:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "23054:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "23061:3:3",
                                "nodeType": "YulLiteral",
                                "src": "23061:3:3",
                                "type": "",
                                "value": "160"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "23050:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "23050:3:3"
                            },
                            "nativeSrc": "23050:15:3",
                            "nodeType": "YulFunctionCall",
                            "src": "23050:15:3"
                          }
                        ],
                        "functionName": {
                          "name": "read_from_calldatat_uint120",
                          "nativeSrc": "23022:27:3",
                          "nodeType": "YulIdentifier",
                          "src": "23022:27:3"
                        },
                        "nativeSrc": "23022:44:3",
                        "nodeType": "YulFunctionCall",
                        "src": "23022:44:3"
                      }
                    ],
                    "functionName": {
                      "name": "update_storage_value_offset_uint120_to_uint120",
                      "nativeSrc": "22963:46:3",
                      "nodeType": "YulIdentifier",
                      "src": "22963:46:3"
                    },
                    "nativeSrc": "22963:104:3",
                    "nodeType": "YulFunctionCall",
                    "src": "22963:104:3"
                  },
                  "nativeSrc": "22963:104:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "22963:104:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberSlot",
                        "nativeSrc": "23127:10:3",
                        "nodeType": "YulIdentifier",
                        "src": "23127:10:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "23171:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "23171:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "23178:3:3",
                                "nodeType": "YulLiteral",
                                "src": "23178:3:3",
                                "type": "",
                                "value": "192"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "23167:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "23167:3:3"
                            },
                            "nativeSrc": "23167:15:3",
                            "nodeType": "YulFunctionCall",
                            "src": "23167:15:3"
                          }
                        ],
                        "functionName": {
                          "name": "read_from_calldatat_uint120",
                          "nativeSrc": "23139:27:3",
                          "nodeType": "YulIdentifier",
                          "src": "23139:27:3"
                        },
                        "nativeSrc": "23139:44:3",
                        "nodeType": "YulFunctionCall",
                        "src": "23139:44:3"
                      }
                    ],
                    "functionName": {
                      "name": "update_storage_value_offset_t_uint120_to_t_uint120",
                      "nativeSrc": "23076:50:3",
                      "nodeType": "YulIdentifier",
                      "src": "23076:50:3"
                    },
                    "nativeSrc": "23076:108:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23076:108:3"
                  },
                  "nativeSrc": "23076:108:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "23076:108:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberSlot",
                        "nativeSrc": "23234:10:3",
                        "nodeType": "YulIdentifier",
                        "src": "23234:10:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "23275:5:3",
                                "nodeType": "YulIdentifier",
                                "src": "23275:5:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "23282:3:3",
                                "nodeType": "YulLiteral",
                                "src": "23282:3:3",
                                "type": "",
                                "value": "224"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "23271:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "23271:3:3"
                            },
                            "nativeSrc": "23271:15:3",
                            "nodeType": "YulFunctionCall",
                            "src": "23271:15:3"
                          }
                        ],
                        "functionName": {
                          "name": "read_from_calldatat_bool",
                          "nativeSrc": "23246:24:3",
                          "nodeType": "YulIdentifier",
                          "src": "23246:24:3"
                        },
                        "nativeSrc": "23246:41:3",
                        "nodeType": "YulFunctionCall",
                        "src": "23246:41:3"
                      }
                    ],
                    "functionName": {
                      "name": "update_storage_value_offset_bool_to_bool",
                      "nativeSrc": "23193:40:3",
                      "nodeType": "YulIdentifier",
                      "src": "23193:40:3"
                    },
                    "nativeSrc": "23193:95:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23193:95:3"
                  },
                  "nativeSrc": "23193:95:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "23193:95:3"
                }
              ]
            },
            "name": "update_storage_value_offset_0_t_struct$_MVO_$61_calldata_ptr_to_t_struct$_MVO_$61_storage",
            "nativeSrc": "20867:2427:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nativeSrc": "20966:4:3",
                "nodeType": "YulTypedName",
                "src": "20966:4:3",
                "type": ""
              },
              {
                "name": "value",
                "nativeSrc": "20972:5:3",
                "nodeType": "YulTypedName",
                "src": "20972:5:3",
                "type": ""
              }
            ],
            "src": "20867:2427:3"
          },
          {
            "body": {
              "nativeSrc": "23376:424:3",
              "nodeType": "YulBlock",
              "src": "23376:424:3",
              "statements": [
                {
                  "nativeSrc": "23386:43:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "23386:43:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nativeSrc": "23425:3:3",
                        "nodeType": "YulIdentifier",
                        "src": "23425:3:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "23412:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "23412:12:3"
                    },
                    "nativeSrc": "23412:17:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23412:17:3"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nativeSrc": "23390:18:3",
                      "nodeType": "YulTypedName",
                      "src": "23390:18:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "23518:16:3",
                    "nodeType": "YulBlock",
                    "src": "23518:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "23527:1:3",
                              "nodeType": "YulLiteral",
                              "src": "23527:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "23530:1:3",
                              "nodeType": "YulLiteral",
                              "src": "23530:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "23520:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "23520:6:3"
                          },
                          "nativeSrc": "23520:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "23520:12:3"
                        },
                        "nativeSrc": "23520:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "23520:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nativeSrc": "23452:18:3",
                            "nodeType": "YulIdentifier",
                            "src": "23452:18:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nativeSrc": "23480:12:3",
                                      "nodeType": "YulIdentifier",
                                      "src": "23480:12:3"
                                    },
                                    "nativeSrc": "23480:14:3",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23480:14:3"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nativeSrc": "23496:8:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "23496:8:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "23476:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "23476:3:3"
                                },
                                "nativeSrc": "23476:29:3",
                                "nodeType": "YulFunctionCall",
                                "src": "23476:29:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "23511:2:3",
                                    "nodeType": "YulLiteral",
                                    "src": "23511:2:3",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "23507:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "23507:3:3"
                                },
                                "nativeSrc": "23507:7:3",
                                "nodeType": "YulFunctionCall",
                                "src": "23507:7:3"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "23472:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "23472:3:3"
                            },
                            "nativeSrc": "23472:43:3",
                            "nodeType": "YulFunctionCall",
                            "src": "23472:43:3"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "23448:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "23448:3:3"
                        },
                        "nativeSrc": "23448:68:3",
                        "nodeType": "YulFunctionCall",
                        "src": "23448:68:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "23441:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "23441:6:3"
                    },
                    "nativeSrc": "23441:76:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23441:76:3"
                  },
                  "nativeSrc": "23438:96:3",
                  "nodeType": "YulIf",
                  "src": "23438:96:3"
                },
                {
                  "nativeSrc": "23543:48:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "23543:48:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "rel_offset_of_tail",
                        "nativeSrc": "23562:18:3",
                        "nodeType": "YulIdentifier",
                        "src": "23562:18:3"
                      },
                      {
                        "name": "base_ref",
                        "nativeSrc": "23582:8:3",
                        "nodeType": "YulIdentifier",
                        "src": "23582:8:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "23558:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "23558:3:3"
                    },
                    "nativeSrc": "23558:33:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23558:33:3"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "23547:7:3",
                      "nodeType": "YulTypedName",
                      "src": "23547:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "23600:31:3",
                  "nodeType": "YulAssignment",
                  "src": "23600:31:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "23623:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "23623:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "23610:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "23610:12:3"
                    },
                    "nativeSrc": "23610:21:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23610:21:3"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nativeSrc": "23600:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "23600:6:3"
                    }
                  ]
                },
                {
                  "nativeSrc": "23640:27:3",
                  "nodeType": "YulAssignment",
                  "src": "23640:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nativeSrc": "23653:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "23653:7:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "23662:4:3",
                        "nodeType": "YulLiteral",
                        "src": "23662:4:3",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "23649:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "23649:3:3"
                    },
                    "nativeSrc": "23649:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23649:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "23640:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "23640:5:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "23710:16:3",
                    "nodeType": "YulBlock",
                    "src": "23710:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "23719:1:3",
                              "nodeType": "YulLiteral",
                              "src": "23719:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "23722:1:3",
                              "nodeType": "YulLiteral",
                              "src": "23722:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "23712:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "23712:6:3"
                          },
                          "nativeSrc": "23712:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "23712:12:3"
                        },
                        "nativeSrc": "23712:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "23712:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "23682:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "23682:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "23690:18:3",
                        "nodeType": "YulLiteral",
                        "src": "23690:18:3",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "23679:2:3",
                      "nodeType": "YulIdentifier",
                      "src": "23679:2:3"
                    },
                    "nativeSrc": "23679:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23679:30:3"
                  },
                  "nativeSrc": "23676:50:3",
                  "nodeType": "YulIf",
                  "src": "23676:50:3"
                },
                {
                  "body": {
                    "nativeSrc": "23778:16:3",
                    "nodeType": "YulBlock",
                    "src": "23778:16:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "23787:1:3",
                              "nodeType": "YulLiteral",
                              "src": "23787:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "23790:1:3",
                              "nodeType": "YulLiteral",
                              "src": "23790:1:3",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "23780:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "23780:6:3"
                          },
                          "nativeSrc": "23780:12:3",
                          "nodeType": "YulFunctionCall",
                          "src": "23780:12:3"
                        },
                        "nativeSrc": "23780:12:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "23780:12:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "23742:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "23742:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nativeSrc": "23753:12:3",
                              "nodeType": "YulIdentifier",
                              "src": "23753:12:3"
                            },
                            "nativeSrc": "23753:14:3",
                            "nodeType": "YulFunctionCall",
                            "src": "23753:14:3"
                          },
                          {
                            "name": "length",
                            "nativeSrc": "23769:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "23769:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "23749:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "23749:3:3"
                        },
                        "nativeSrc": "23749:27:3",
                        "nodeType": "YulFunctionCall",
                        "src": "23749:27:3"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nativeSrc": "23738:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "23738:3:3"
                    },
                    "nativeSrc": "23738:39:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23738:39:3"
                  },
                  "nativeSrc": "23735:59:3",
                  "nodeType": "YulIf",
                  "src": "23735:59:3"
                }
              ]
            },
            "name": "calldata_access_string_calldata",
            "nativeSrc": "23299:501:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nativeSrc": "23340:8:3",
                "nodeType": "YulTypedName",
                "src": "23340:8:3",
                "type": ""
              },
              {
                "name": "ptr",
                "nativeSrc": "23350:3:3",
                "nodeType": "YulTypedName",
                "src": "23350:3:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "23358:5:3",
                "nodeType": "YulTypedName",
                "src": "23358:5:3",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "23365:6:3",
                "nodeType": "YulTypedName",
                "src": "23365:6:3",
                "type": ""
              }
            ],
            "src": "23299:501:3"
          },
          {
            "body": {
              "nativeSrc": "23854:85:3",
              "nodeType": "YulBlock",
              "src": "23854:85:3",
              "statements": [
                {
                  "nativeSrc": "23864:29:3",
                  "nodeType": "YulAssignment",
                  "src": "23864:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "23886:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "23886:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "23873:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "23873:12:3"
                    },
                    "nativeSrc": "23873:20:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23873:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "23864:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "23864:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "23927:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "23927:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint120",
                      "nativeSrc": "23902:24:3",
                      "nodeType": "YulIdentifier",
                      "src": "23902:24:3"
                    },
                    "nativeSrc": "23902:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "23902:31:3"
                  },
                  "nativeSrc": "23902:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "23902:31:3"
                }
              ]
            },
            "name": "abi_decode_uint120",
            "nativeSrc": "23805:134:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "23833:6:3",
                "nodeType": "YulTypedName",
                "src": "23833:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "23844:5:3",
                "nodeType": "YulTypedName",
                "src": "23844:5:3",
                "type": ""
              }
            ],
            "src": "23805:134:3"
          },
          {
            "body": {
              "nativeSrc": "23990:82:3",
              "nodeType": "YulBlock",
              "src": "23990:82:3",
              "statements": [
                {
                  "nativeSrc": "24000:29:3",
                  "nodeType": "YulAssignment",
                  "src": "24000:29:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "24022:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "24022:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "24009:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "24009:12:3"
                    },
                    "nativeSrc": "24009:20:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24009:20:3"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "24000:5:3",
                      "nodeType": "YulIdentifier",
                      "src": "24000:5:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "24060:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "24060:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nativeSrc": "24038:21:3",
                      "nodeType": "YulIdentifier",
                      "src": "24038:21:3"
                    },
                    "nativeSrc": "24038:28:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24038:28:3"
                  },
                  "nativeSrc": "24038:28:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "24038:28:3"
                }
              ]
            },
            "name": "abi_decode_bool",
            "nativeSrc": "23944:128:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "23969:6:3",
                "nodeType": "YulTypedName",
                "src": "23969:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "23980:5:3",
                "nodeType": "YulTypedName",
                "src": "23980:5:3",
                "type": ""
              }
            ],
            "src": "23944:128:3"
          },
          {
            "body": {
              "nativeSrc": "24304:1504:3",
              "nodeType": "YulBlock",
              "src": "24304:1504:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "24321:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "24321:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24332:2:3",
                        "nodeType": "YulLiteral",
                        "src": "24332:2:3",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "24314:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "24314:6:3"
                    },
                    "nativeSrc": "24314:21:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24314:21:3"
                  },
                  "nativeSrc": "24314:21:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "24314:21:3"
                },
                {
                  "nativeSrc": "24344:76:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24344:76:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "24385:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "24385:6:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "24393:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "24393:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "24405:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "24405:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24416:2:3",
                            "nodeType": "YulLiteral",
                            "src": "24416:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24401:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24401:3:3"
                        },
                        "nativeSrc": "24401:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24401:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "24358:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "24358:26:3"
                    },
                    "nativeSrc": "24358:62:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24358:62:3"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nativeSrc": "24348:6:3",
                      "nodeType": "YulTypedName",
                      "src": "24348:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "24440:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "24440:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24451:2:3",
                            "nodeType": "YulLiteral",
                            "src": "24451:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24436:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24436:3:3"
                        },
                        "nativeSrc": "24436:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24436:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "24460:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "24460:6:3"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "24468:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "24468:9:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "24456:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24456:3:3"
                        },
                        "nativeSrc": "24456:22:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24456:22:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "24429:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "24429:6:3"
                    },
                    "nativeSrc": "24429:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24429:50:3"
                  },
                  "nativeSrc": "24429:50:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "24429:50:3"
                },
                {
                  "nativeSrc": "24488:81:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24488:81:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nativeSrc": "24554:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "24554:6:3"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "24562:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "24562:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldata_access_string_calldata",
                      "nativeSrc": "24522:31:3",
                      "nodeType": "YulIdentifier",
                      "src": "24522:31:3"
                    },
                    "nativeSrc": "24522:47:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24522:47:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue0",
                      "nativeSrc": "24492:12:3",
                      "nodeType": "YulTypedName",
                      "src": "24492:12:3",
                      "type": ""
                    },
                    {
                      "name": "memberValue1",
                      "nativeSrc": "24506:12:3",
                      "nodeType": "YulTypedName",
                      "src": "24506:12:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nativeSrc": "24585:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "24585:6:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "24593:6:3",
                        "nodeType": "YulLiteral",
                        "src": "24593:6:3",
                        "type": "",
                        "value": "0x0100"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "24578:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "24578:6:3"
                    },
                    "nativeSrc": "24578:22:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24578:22:3"
                  },
                  "nativeSrc": "24578:22:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "24578:22:3"
                },
                {
                  "nativeSrc": "24609:89:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24609:89:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "memberValue0",
                        "nativeSrc": "24650:12:3",
                        "nodeType": "YulIdentifier",
                        "src": "24650:12:3"
                      },
                      {
                        "name": "memberValue1",
                        "nativeSrc": "24664:12:3",
                        "nodeType": "YulIdentifier",
                        "src": "24664:12:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "24682:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "24682:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24690:6:3",
                            "nodeType": "YulLiteral",
                            "src": "24690:6:3",
                            "type": "",
                            "value": "0x0100"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24678:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24678:3:3"
                        },
                        "nativeSrc": "24678:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24678:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "24623:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "24623:26:3"
                    },
                    "nativeSrc": "24623:75:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24623:75:3"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nativeSrc": "24613:6:3",
                      "nodeType": "YulTypedName",
                      "src": "24613:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "24707:42:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24707:42:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "24737:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "24737:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24745:2:3",
                            "nodeType": "YulLiteral",
                            "src": "24745:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24733:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24733:3:3"
                        },
                        "nativeSrc": "24733:15:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24733:15:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "24720:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "24720:12:3"
                    },
                    "nativeSrc": "24720:29:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24720:29:3"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "24711:5:3",
                      "nodeType": "YulTypedName",
                      "src": "24711:5:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "24783:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "24783:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nativeSrc": "24758:24:3",
                      "nodeType": "YulIdentifier",
                      "src": "24758:24:3"
                    },
                    "nativeSrc": "24758:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24758:31:3"
                  },
                  "nativeSrc": "24758:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "24758:31:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "24825:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "24825:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "24836:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "24836:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24844:2:3",
                            "nodeType": "YulLiteral",
                            "src": "24844:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24832:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24832:3:3"
                        },
                        "nativeSrc": "24832:15:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24832:15:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_address_payable",
                      "nativeSrc": "24798:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "24798:26:3"
                    },
                    "nativeSrc": "24798:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24798:50:3"
                  },
                  "nativeSrc": "24798:50:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "24798:50:3"
                },
                {
                  "nativeSrc": "24857:59:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24857:59:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "24902:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "24902:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24910:4:3",
                            "nodeType": "YulLiteral",
                            "src": "24910:4:3",
                            "type": "",
                            "value": "0x40"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24898:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24898:3:3"
                        },
                        "nativeSrc": "24898:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24898:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "24879:18:3",
                      "nodeType": "YulIdentifier",
                      "src": "24879:18:3"
                    },
                    "nativeSrc": "24879:37:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24879:37:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue0_1",
                      "nativeSrc": "24861:14:3",
                      "nodeType": "YulTypedName",
                      "src": "24861:14:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberValue0_1",
                        "nativeSrc": "24952:14:3",
                        "nodeType": "YulIdentifier",
                        "src": "24952:14:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "24972:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "24972:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "24980:4:3",
                            "nodeType": "YulLiteral",
                            "src": "24980:4:3",
                            "type": "",
                            "value": "0x40"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "24968:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "24968:3:3"
                        },
                        "nativeSrc": "24968:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "24968:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_address_payable",
                      "nativeSrc": "24925:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "24925:26:3"
                    },
                    "nativeSrc": "24925:61:3",
                    "nodeType": "YulFunctionCall",
                    "src": "24925:61:3"
                  },
                  "nativeSrc": "24925:61:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "24925:61:3"
                },
                {
                  "nativeSrc": "24995:94:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "24995:94:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nativeSrc": "25065:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "25065:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "25077:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25077:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25085:2:3",
                            "nodeType": "YulLiteral",
                            "src": "25085:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25073:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25073:3:3"
                        },
                        "nativeSrc": "25073:15:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25073:15:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldata_access_string_calldata",
                      "nativeSrc": "25033:31:3",
                      "nodeType": "YulIdentifier",
                      "src": "25033:31:3"
                    },
                    "nativeSrc": "25033:56:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25033:56:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue0_2",
                      "nativeSrc": "24999:14:3",
                      "nodeType": "YulTypedName",
                      "src": "24999:14:3",
                      "type": ""
                    },
                    {
                      "name": "memberValue1_1",
                      "nativeSrc": "25015:14:3",
                      "nodeType": "YulTypedName",
                      "src": "25015:14:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "25109:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25109:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25117:2:3",
                            "nodeType": "YulLiteral",
                            "src": "25117:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25105:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25105:3:3"
                        },
                        "nativeSrc": "25105:15:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25105:15:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nativeSrc": "25126:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25126:6:3"
                          },
                          {
                            "name": "tail_1",
                            "nativeSrc": "25134:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25134:6:3"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "25122:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25122:3:3"
                        },
                        "nativeSrc": "25122:19:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25122:19:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "25098:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "25098:6:3"
                    },
                    "nativeSrc": "25098:44:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25098:44:3"
                  },
                  "nativeSrc": "25098:44:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "25098:44:3"
                },
                {
                  "nativeSrc": "25151:80:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "25151:80:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "memberValue0_2",
                        "nativeSrc": "25192:14:3",
                        "nodeType": "YulIdentifier",
                        "src": "25192:14:3"
                      },
                      {
                        "name": "memberValue1_1",
                        "nativeSrc": "25208:14:3",
                        "nodeType": "YulIdentifier",
                        "src": "25208:14:3"
                      },
                      {
                        "name": "tail_2",
                        "nativeSrc": "25224:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "25224:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "25165:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "25165:26:3"
                    },
                    "nativeSrc": "25165:66:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25165:66:3"
                  },
                  "variables": [
                    {
                      "name": "tail_3",
                      "nativeSrc": "25155:6:3",
                      "nodeType": "YulTypedName",
                      "src": "25155:6:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "25240:16:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "25240:16:3",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "25255:1:3",
                    "nodeType": "YulLiteral",
                    "src": "25255:1:3",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "25244:7:3",
                      "nodeType": "YulTypedName",
                      "src": "25244:7:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "25265:42:3",
                  "nodeType": "YulAssignment",
                  "src": "25265:42:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "25293:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25293:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25301:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25301:4:3",
                            "type": "",
                            "value": "0x80"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25289:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25289:3:3"
                        },
                        "nativeSrc": "25289:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25289:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "25276:12:3",
                      "nodeType": "YulIdentifier",
                      "src": "25276:12:3"
                    },
                    "nativeSrc": "25276:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25276:31:3"
                  },
                  "variableNames": [
                    {
                      "name": "value_1",
                      "nativeSrc": "25265:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "25265:7:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "25327:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25327:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25335:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25335:4:3",
                            "type": "",
                            "value": "0x80"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25323:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25323:3:3"
                        },
                        "nativeSrc": "25323:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25323:17:3"
                      },
                      {
                        "name": "value_1",
                        "nativeSrc": "25342:7:3",
                        "nodeType": "YulIdentifier",
                        "src": "25342:7:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "25316:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "25316:6:3"
                    },
                    "nativeSrc": "25316:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25316:34:3"
                  },
                  "nativeSrc": "25316:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "25316:34:3"
                },
                {
                  "nativeSrc": "25359:59:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "25359:59:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "25404:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25404:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25412:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25412:4:3",
                            "type": "",
                            "value": "0xa0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25400:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25400:3:3"
                        },
                        "nativeSrc": "25400:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25400:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint120",
                      "nativeSrc": "25381:18:3",
                      "nodeType": "YulIdentifier",
                      "src": "25381:18:3"
                    },
                    "nativeSrc": "25381:37:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25381:37:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue0_3",
                      "nativeSrc": "25363:14:3",
                      "nodeType": "YulTypedName",
                      "src": "25363:14:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberValue0_3",
                        "nativeSrc": "25446:14:3",
                        "nodeType": "YulIdentifier",
                        "src": "25446:14:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "25466:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25466:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25474:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25474:4:3",
                            "type": "",
                            "value": "0xa0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25462:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25462:3:3"
                        },
                        "nativeSrc": "25462:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25462:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_uint120",
                      "nativeSrc": "25427:18:3",
                      "nodeType": "YulIdentifier",
                      "src": "25427:18:3"
                    },
                    "nativeSrc": "25427:53:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25427:53:3"
                  },
                  "nativeSrc": "25427:53:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "25427:53:3"
                },
                {
                  "nativeSrc": "25489:59:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "25489:59:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "25534:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25534:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25542:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25542:4:3",
                            "type": "",
                            "value": "0xc0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25530:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25530:3:3"
                        },
                        "nativeSrc": "25530:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25530:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint120",
                      "nativeSrc": "25511:18:3",
                      "nodeType": "YulIdentifier",
                      "src": "25511:18:3"
                    },
                    "nativeSrc": "25511:37:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25511:37:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue0_4",
                      "nativeSrc": "25493:14:3",
                      "nodeType": "YulTypedName",
                      "src": "25493:14:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberValue0_4",
                        "nativeSrc": "25576:14:3",
                        "nodeType": "YulIdentifier",
                        "src": "25576:14:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "25596:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25596:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25604:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25604:4:3",
                            "type": "",
                            "value": "0xc0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25592:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25592:3:3"
                        },
                        "nativeSrc": "25592:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25592:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_uint120",
                      "nativeSrc": "25557:18:3",
                      "nodeType": "YulIdentifier",
                      "src": "25557:18:3"
                    },
                    "nativeSrc": "25557:53:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25557:53:3"
                  },
                  "nativeSrc": "25557:53:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "25557:53:3"
                },
                {
                  "nativeSrc": "25619:56:3",
                  "nodeType": "YulVariableDeclaration",
                  "src": "25619:56:3",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "25661:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25661:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25669:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25669:4:3",
                            "type": "",
                            "value": "0xe0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25657:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25657:3:3"
                        },
                        "nativeSrc": "25657:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25657:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bool",
                      "nativeSrc": "25641:15:3",
                      "nodeType": "YulIdentifier",
                      "src": "25641:15:3"
                    },
                    "nativeSrc": "25641:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25641:34:3"
                  },
                  "variables": [
                    {
                      "name": "memberValue0_5",
                      "nativeSrc": "25623:14:3",
                      "nodeType": "YulTypedName",
                      "src": "25623:14:3",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memberValue0_5",
                        "nativeSrc": "25700:14:3",
                        "nodeType": "YulIdentifier",
                        "src": "25700:14:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nativeSrc": "25720:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "25720:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25728:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25728:4:3",
                            "type": "",
                            "value": "0xe0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25716:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25716:3:3"
                        },
                        "nativeSrc": "25716:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25716:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bool",
                      "nativeSrc": "25684:15:3",
                      "nodeType": "YulIdentifier",
                      "src": "25684:15:3"
                    },
                    "nativeSrc": "25684:50:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25684:50:3"
                  },
                  "nativeSrc": "25684:50:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "25684:50:3"
                },
                {
                  "nativeSrc": "25743:14:3",
                  "nodeType": "YulAssignment",
                  "src": "25743:14:3",
                  "value": {
                    "name": "tail_3",
                    "nativeSrc": "25751:6:3",
                    "nodeType": "YulIdentifier",
                    "src": "25751:6:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "25743:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "25743:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "25777:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "25777:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "25788:4:3",
                            "nodeType": "YulLiteral",
                            "src": "25788:4:3",
                            "type": "",
                            "value": "0x40"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "25773:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "25773:3:3"
                        },
                        "nativeSrc": "25773:20:3",
                        "nodeType": "YulFunctionCall",
                        "src": "25773:20:3"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "25795:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "25795:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "25766:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "25766:6:3"
                    },
                    "nativeSrc": "25766:36:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25766:36:3"
                  },
                  "nativeSrc": "25766:36:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "25766:36:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_calldata_ptr_t_struct$_MVO_$61_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_struct$_MVO_$61_memory_ptr_t_uint256__fromStack_reversed",
            "nativeSrc": "24077:1731:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "24249:9:3",
                "nodeType": "YulTypedName",
                "src": "24249:9:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "24260:6:3",
                "nodeType": "YulTypedName",
                "src": "24260:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "24268:6:3",
                "nodeType": "YulTypedName",
                "src": "24268:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "24276:6:3",
                "nodeType": "YulTypedName",
                "src": "24276:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "24284:6:3",
                "nodeType": "YulTypedName",
                "src": "24284:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "24295:4:3",
                "nodeType": "YulTypedName",
                "src": "24295:4:3",
                "type": ""
              }
            ],
            "src": "24077:1731:3"
          },
          {
            "body": {
              "nativeSrc": "25972:159:3",
              "nodeType": "YulBlock",
              "src": "25972:159:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "25989:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "25989:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "26000:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "26000:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "25982:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "25982:6:3"
                    },
                    "nativeSrc": "25982:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "25982:25:3"
                  },
                  "nativeSrc": "25982:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "25982:25:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26027:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "26027:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26038:2:3",
                            "nodeType": "YulLiteral",
                            "src": "26038:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26023:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "26023:3:3"
                        },
                        "nativeSrc": "26023:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "26023:18:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26043:2:3",
                        "nodeType": "YulLiteral",
                        "src": "26043:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26016:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "26016:6:3"
                    },
                    "nativeSrc": "26016:30:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26016:30:3"
                  },
                  "nativeSrc": "26016:30:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "26016:30:3"
                },
                {
                  "nativeSrc": "26055:70:3",
                  "nodeType": "YulAssignment",
                  "src": "26055:70:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "26090:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "26090:6:3"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "26098:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "26098:6:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26110:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "26110:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26121:2:3",
                            "nodeType": "YulLiteral",
                            "src": "26121:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26106:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "26106:3:3"
                        },
                        "nativeSrc": "26106:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "26106:18:3"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string_calldata",
                      "nativeSrc": "26063:26:3",
                      "nodeType": "YulIdentifier",
                      "src": "26063:26:3"
                    },
                    "nativeSrc": "26063:62:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26063:62:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "26055:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "26055:4:3"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "25813:318:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "25925:9:3",
                "nodeType": "YulTypedName",
                "src": "25925:9:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "25936:6:3",
                "nodeType": "YulTypedName",
                "src": "25936:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "25944:6:3",
                "nodeType": "YulTypedName",
                "src": "25944:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "25952:6:3",
                "nodeType": "YulTypedName",
                "src": "25952:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "25963:4:3",
                "nodeType": "YulTypedName",
                "src": "25963:4:3",
                "type": ""
              }
            ],
            "src": "25813:318:3"
          },
          {
            "body": {
              "nativeSrc": "26183:89:3",
              "nodeType": "YulBlock",
              "src": "26183:89:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "26210:22:3",
                    "nodeType": "YulBlock",
                    "src": "26210:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "26212:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "26212:16:3"
                          },
                          "nativeSrc": "26212:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "26212:18:3"
                        },
                        "nativeSrc": "26212:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "26212:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "26203:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "26203:5:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "26196:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "26196:6:3"
                    },
                    "nativeSrc": "26196:13:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26196:13:3"
                  },
                  "nativeSrc": "26193:39:3",
                  "nodeType": "YulIf",
                  "src": "26193:39:3"
                },
                {
                  "nativeSrc": "26241:25:3",
                  "nodeType": "YulAssignment",
                  "src": "26241:25:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nativeSrc": "26252:5:3",
                        "nodeType": "YulIdentifier",
                        "src": "26252:5:3"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "26263:1:3",
                            "nodeType": "YulLiteral",
                            "src": "26263:1:3",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nativeSrc": "26259:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "26259:3:3"
                        },
                        "nativeSrc": "26259:6:3",
                        "nodeType": "YulFunctionCall",
                        "src": "26259:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "26248:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "26248:3:3"
                    },
                    "nativeSrc": "26248:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26248:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nativeSrc": "26241:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "26241:3:3"
                    }
                  ]
                }
              ]
            },
            "name": "decrement_t_uint256",
            "nativeSrc": "26136:136:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nativeSrc": "26165:5:3",
                "nodeType": "YulTypedName",
                "src": "26165:5:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nativeSrc": "26175:3:3",
                "nodeType": "YulTypedName",
                "src": "26175:3:3",
                "type": ""
              }
            ],
            "src": "26136:136:3"
          },
          {
            "body": {
              "nativeSrc": "26414:119:3",
              "nodeType": "YulBlock",
              "src": "26414:119:3",
              "statements": [
                {
                  "nativeSrc": "26424:26:3",
                  "nodeType": "YulAssignment",
                  "src": "26424:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "26436:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "26436:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26447:2:3",
                        "nodeType": "YulLiteral",
                        "src": "26447:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "26432:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "26432:3:3"
                    },
                    "nativeSrc": "26432:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26432:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "26424:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "26424:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "26466:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "26466:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "26477:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "26477:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26459:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "26459:6:3"
                    },
                    "nativeSrc": "26459:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26459:25:3"
                  },
                  "nativeSrc": "26459:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "26459:25:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26504:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "26504:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26515:2:3",
                            "nodeType": "YulLiteral",
                            "src": "26515:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26500:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "26500:3:3"
                        },
                        "nativeSrc": "26500:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "26500:18:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "26520:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "26520:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26493:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "26493:6:3"
                    },
                    "nativeSrc": "26493:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26493:34:3"
                  },
                  "nativeSrc": "26493:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "26493:34:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_rational_1_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nativeSrc": "26277:256:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "26375:9:3",
                "nodeType": "YulTypedName",
                "src": "26375:9:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "26386:6:3",
                "nodeType": "YulTypedName",
                "src": "26386:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "26394:6:3",
                "nodeType": "YulTypedName",
                "src": "26394:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "26405:4:3",
                "nodeType": "YulTypedName",
                "src": "26405:4:3",
                "type": ""
              }
            ],
            "src": "26277:256:3"
          },
          {
            "body": {
              "nativeSrc": "26675:119:3",
              "nodeType": "YulBlock",
              "src": "26675:119:3",
              "statements": [
                {
                  "nativeSrc": "26685:26:3",
                  "nodeType": "YulAssignment",
                  "src": "26685:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "26697:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "26697:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "26708:2:3",
                        "nodeType": "YulLiteral",
                        "src": "26708:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "26693:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "26693:3:3"
                    },
                    "nativeSrc": "26693:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26693:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "26685:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "26685:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "26727:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "26727:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "26738:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "26738:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26720:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "26720:6:3"
                    },
                    "nativeSrc": "26720:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26720:25:3"
                  },
                  "nativeSrc": "26720:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "26720:25:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "26765:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "26765:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "26776:2:3",
                            "nodeType": "YulLiteral",
                            "src": "26776:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "26761:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "26761:3:3"
                        },
                        "nativeSrc": "26761:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "26761:18:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "26781:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "26781:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "26754:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "26754:6:3"
                    },
                    "nativeSrc": "26754:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26754:34:3"
                  },
                  "nativeSrc": "26754:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "26754:34:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_rational_3_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nativeSrc": "26538:256:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "26636:9:3",
                "nodeType": "YulTypedName",
                "src": "26636:9:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "26647:6:3",
                "nodeType": "YulTypedName",
                "src": "26647:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "26655:6:3",
                "nodeType": "YulTypedName",
                "src": "26655:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "26666:4:3",
                "nodeType": "YulTypedName",
                "src": "26666:4:3",
                "type": ""
              }
            ],
            "src": "26538:256:3"
          },
          {
            "body": {
              "nativeSrc": "26980:217:3",
              "nodeType": "YulBlock",
              "src": "26980:217:3",
              "statements": [
                {
                  "nativeSrc": "26990:27:3",
                  "nodeType": "YulAssignment",
                  "src": "26990:27:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "27002:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "27002:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27013:3:3",
                        "nodeType": "YulLiteral",
                        "src": "27013:3:3",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "26998:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "26998:3:3"
                    },
                    "nativeSrc": "26998:19:3",
                    "nodeType": "YulFunctionCall",
                    "src": "26998:19:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "26990:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "26990:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "27033:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "27033:9:3"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "27044:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "27044:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27026:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27026:6:3"
                    },
                    "nativeSrc": "27026:25:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27026:25:3"
                  },
                  "nativeSrc": "27026:25:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "27026:25:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "27071:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "27071:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27082:2:3",
                            "nodeType": "YulLiteral",
                            "src": "27082:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "27067:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "27067:3:3"
                        },
                        "nativeSrc": "27067:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "27067:18:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "27091:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "27091:6:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27099:4:3",
                            "nodeType": "YulLiteral",
                            "src": "27099:4:3",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "27087:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "27087:3:3"
                        },
                        "nativeSrc": "27087:17:3",
                        "nodeType": "YulFunctionCall",
                        "src": "27087:17:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27060:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27060:6:3"
                    },
                    "nativeSrc": "27060:45:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27060:45:3"
                  },
                  "nativeSrc": "27060:45:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "27060:45:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "27125:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "27125:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27136:2:3",
                            "nodeType": "YulLiteral",
                            "src": "27136:2:3",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "27121:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "27121:3:3"
                        },
                        "nativeSrc": "27121:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "27121:18:3"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "27141:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "27141:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27114:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27114:6:3"
                    },
                    "nativeSrc": "27114:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27114:34:3"
                  },
                  "nativeSrc": "27114:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "27114:34:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "27168:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "27168:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27179:2:3",
                            "nodeType": "YulLiteral",
                            "src": "27179:2:3",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "27164:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "27164:3:3"
                        },
                        "nativeSrc": "27164:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "27164:18:3"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "27184:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "27184:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27157:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27157:6:3"
                    },
                    "nativeSrc": "27157:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27157:34:3"
                  },
                  "nativeSrc": "27157:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "27157:34:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
            "nativeSrc": "26799:398:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "26925:9:3",
                "nodeType": "YulTypedName",
                "src": "26925:9:3",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "26936:6:3",
                "nodeType": "YulTypedName",
                "src": "26936:6:3",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "26944:6:3",
                "nodeType": "YulTypedName",
                "src": "26944:6:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "26952:6:3",
                "nodeType": "YulTypedName",
                "src": "26952:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "26960:6:3",
                "nodeType": "YulTypedName",
                "src": "26960:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "26971:4:3",
                "nodeType": "YulTypedName",
                "src": "26971:4:3",
                "type": ""
              }
            ],
            "src": "26799:398:3"
          },
          {
            "body": {
              "nativeSrc": "27254:116:3",
              "nodeType": "YulBlock",
              "src": "27254:116:3",
              "statements": [
                {
                  "nativeSrc": "27264:20:3",
                  "nodeType": "YulAssignment",
                  "src": "27264:20:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "27279:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "27279:1:3"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "27282:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "27282:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "27275:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "27275:3:3"
                    },
                    "nativeSrc": "27275:9:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27275:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nativeSrc": "27264:7:3",
                      "nodeType": "YulIdentifier",
                      "src": "27264:7:3"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "27342:22:3",
                    "nodeType": "YulBlock",
                    "src": "27342:22:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "27344:16:3",
                            "nodeType": "YulIdentifier",
                            "src": "27344:16:3"
                          },
                          "nativeSrc": "27344:18:3",
                          "nodeType": "YulFunctionCall",
                          "src": "27344:18:3"
                        },
                        "nativeSrc": "27344:18:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "27344:18:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "27313:1:3",
                                "nodeType": "YulIdentifier",
                                "src": "27313:1:3"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "27306:6:3",
                              "nodeType": "YulIdentifier",
                              "src": "27306:6:3"
                            },
                            "nativeSrc": "27306:9:3",
                            "nodeType": "YulFunctionCall",
                            "src": "27306:9:3"
                          },
                          {
                            "arguments": [
                              {
                                "name": "y",
                                "nativeSrc": "27320:1:3",
                                "nodeType": "YulIdentifier",
                                "src": "27320:1:3"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "product",
                                    "nativeSrc": "27327:7:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "27327:7:3"
                                  },
                                  {
                                    "name": "x",
                                    "nativeSrc": "27336:1:3",
                                    "nodeType": "YulIdentifier",
                                    "src": "27336:1:3"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "27323:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "27323:3:3"
                                },
                                "nativeSrc": "27323:15:3",
                                "nodeType": "YulFunctionCall",
                                "src": "27323:15:3"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nativeSrc": "27317:2:3",
                              "nodeType": "YulIdentifier",
                              "src": "27317:2:3"
                            },
                            "nativeSrc": "27317:22:3",
                            "nodeType": "YulFunctionCall",
                            "src": "27317:22:3"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "27303:2:3",
                          "nodeType": "YulIdentifier",
                          "src": "27303:2:3"
                        },
                        "nativeSrc": "27303:37:3",
                        "nodeType": "YulFunctionCall",
                        "src": "27303:37:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "27296:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27296:6:3"
                    },
                    "nativeSrc": "27296:45:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27296:45:3"
                  },
                  "nativeSrc": "27293:71:3",
                  "nodeType": "YulIf",
                  "src": "27293:71:3"
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nativeSrc": "27202:168:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "27233:1:3",
                "nodeType": "YulTypedName",
                "src": "27233:1:3",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "27236:1:3",
                "nodeType": "YulTypedName",
                "src": "27236:1:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nativeSrc": "27242:7:3",
                "nodeType": "YulTypedName",
                "src": "27242:7:3",
                "type": ""
              }
            ],
            "src": "27202:168:3"
          },
          {
            "body": {
              "nativeSrc": "27421:171:3",
              "nodeType": "YulBlock",
              "src": "27421:171:3",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "27452:111:3",
                    "nodeType": "YulBlock",
                    "src": "27452:111:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "27473:1:3",
                              "nodeType": "YulLiteral",
                              "src": "27473:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "27480:3:3",
                                  "nodeType": "YulLiteral",
                                  "src": "27480:3:3",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "27485:10:3",
                                  "nodeType": "YulLiteral",
                                  "src": "27485:10:3",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "27476:3:3",
                                "nodeType": "YulIdentifier",
                                "src": "27476:3:3"
                              },
                              "nativeSrc": "27476:20:3",
                              "nodeType": "YulFunctionCall",
                              "src": "27476:20:3"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "27466:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "27466:6:3"
                          },
                          "nativeSrc": "27466:31:3",
                          "nodeType": "YulFunctionCall",
                          "src": "27466:31:3"
                        },
                        "nativeSrc": "27466:31:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "27466:31:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "27517:1:3",
                              "nodeType": "YulLiteral",
                              "src": "27517:1:3",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "27520:4:3",
                              "nodeType": "YulLiteral",
                              "src": "27520:4:3",
                              "type": "",
                              "value": "0x12"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "27510:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "27510:6:3"
                          },
                          "nativeSrc": "27510:15:3",
                          "nodeType": "YulFunctionCall",
                          "src": "27510:15:3"
                        },
                        "nativeSrc": "27510:15:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "27510:15:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "27545:1:3",
                              "nodeType": "YulLiteral",
                              "src": "27545:1:3",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "27548:4:3",
                              "nodeType": "YulLiteral",
                              "src": "27548:4:3",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "27538:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "27538:6:3"
                          },
                          "nativeSrc": "27538:15:3",
                          "nodeType": "YulFunctionCall",
                          "src": "27538:15:3"
                        },
                        "nativeSrc": "27538:15:3",
                        "nodeType": "YulExpressionStatement",
                        "src": "27538:15:3"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nativeSrc": "27441:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "27441:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "27434:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27434:6:3"
                    },
                    "nativeSrc": "27434:9:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27434:9:3"
                  },
                  "nativeSrc": "27431:132:3",
                  "nodeType": "YulIf",
                  "src": "27431:132:3"
                },
                {
                  "nativeSrc": "27572:14:3",
                  "nodeType": "YulAssignment",
                  "src": "27572:14:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "27581:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "27581:1:3"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "27584:1:3",
                        "nodeType": "YulIdentifier",
                        "src": "27584:1:3"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nativeSrc": "27577:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "27577:3:3"
                    },
                    "nativeSrc": "27577:9:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27577:9:3"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nativeSrc": "27572:1:3",
                      "nodeType": "YulIdentifier",
                      "src": "27572:1:3"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint256",
            "nativeSrc": "27375:217:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "27406:1:3",
                "nodeType": "YulTypedName",
                "src": "27406:1:3",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "27409:1:3",
                "nodeType": "YulTypedName",
                "src": "27409:1:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nativeSrc": "27415:1:3",
                "nodeType": "YulTypedName",
                "src": "27415:1:3",
                "type": ""
              }
            ],
            "src": "27375:217:3"
          },
          {
            "body": {
              "nativeSrc": "27726:145:3",
              "nodeType": "YulBlock",
              "src": "27726:145:3",
              "statements": [
                {
                  "nativeSrc": "27736:26:3",
                  "nodeType": "YulAssignment",
                  "src": "27736:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "27748:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "27748:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "27759:2:3",
                        "nodeType": "YulLiteral",
                        "src": "27759:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "27744:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "27744:3:3"
                    },
                    "nativeSrc": "27744:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27744:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "27736:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "27736:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "27778:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "27778:9:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "27793:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "27793:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "27809:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "27809:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "27814:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "27814:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "27805:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "27805:3:3"
                                },
                                "nativeSrc": "27805:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "27805:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "27818:1:3",
                                "nodeType": "YulLiteral",
                                "src": "27818:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "27801:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "27801:3:3"
                            },
                            "nativeSrc": "27801:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "27801:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "27789:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "27789:3:3"
                        },
                        "nativeSrc": "27789:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "27789:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27771:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27771:6:3"
                    },
                    "nativeSrc": "27771:51:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27771:51:3"
                  },
                  "nativeSrc": "27771:51:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "27771:51:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "27842:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "27842:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "27853:2:3",
                            "nodeType": "YulLiteral",
                            "src": "27853:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "27838:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "27838:3:3"
                        },
                        "nativeSrc": "27838:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "27838:18:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "27858:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "27858:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "27831:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "27831:6:3"
                    },
                    "nativeSrc": "27831:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "27831:34:3"
                  },
                  "nativeSrc": "27831:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "27831:34:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
            "nativeSrc": "27597:274:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "27687:9:3",
                "nodeType": "YulTypedName",
                "src": "27687:9:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "27698:6:3",
                "nodeType": "YulTypedName",
                "src": "27698:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "27706:6:3",
                "nodeType": "YulTypedName",
                "src": "27706:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "27717:4:3",
                "nodeType": "YulTypedName",
                "src": "27717:4:3",
                "type": ""
              }
            ],
            "src": "27597:274:3"
          },
          {
            "body": {
              "nativeSrc": "28013:145:3",
              "nodeType": "YulBlock",
              "src": "28013:145:3",
              "statements": [
                {
                  "nativeSrc": "28023:26:3",
                  "nodeType": "YulAssignment",
                  "src": "28023:26:3",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "28035:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "28035:9:3"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "28046:2:3",
                        "nodeType": "YulLiteral",
                        "src": "28046:2:3",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "28031:3:3",
                      "nodeType": "YulIdentifier",
                      "src": "28031:3:3"
                    },
                    "nativeSrc": "28031:18:3",
                    "nodeType": "YulFunctionCall",
                    "src": "28031:18:3"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "28023:4:3",
                      "nodeType": "YulIdentifier",
                      "src": "28023:4:3"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "28065:9:3",
                        "nodeType": "YulIdentifier",
                        "src": "28065:9:3"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "28080:6:3",
                            "nodeType": "YulIdentifier",
                            "src": "28080:6:3"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "28096:3:3",
                                    "nodeType": "YulLiteral",
                                    "src": "28096:3:3",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "28101:1:3",
                                    "nodeType": "YulLiteral",
                                    "src": "28101:1:3",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "28092:3:3",
                                  "nodeType": "YulIdentifier",
                                  "src": "28092:3:3"
                                },
                                "nativeSrc": "28092:11:3",
                                "nodeType": "YulFunctionCall",
                                "src": "28092:11:3"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "28105:1:3",
                                "nodeType": "YulLiteral",
                                "src": "28105:1:3",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "28088:3:3",
                              "nodeType": "YulIdentifier",
                              "src": "28088:3:3"
                            },
                            "nativeSrc": "28088:19:3",
                            "nodeType": "YulFunctionCall",
                            "src": "28088:19:3"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "28076:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "28076:3:3"
                        },
                        "nativeSrc": "28076:32:3",
                        "nodeType": "YulFunctionCall",
                        "src": "28076:32:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "28058:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "28058:6:3"
                    },
                    "nativeSrc": "28058:51:3",
                    "nodeType": "YulFunctionCall",
                    "src": "28058:51:3"
                  },
                  "nativeSrc": "28058:51:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "28058:51:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "28129:9:3",
                            "nodeType": "YulIdentifier",
                            "src": "28129:9:3"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "28140:2:3",
                            "nodeType": "YulLiteral",
                            "src": "28140:2:3",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "28125:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "28125:3:3"
                        },
                        "nativeSrc": "28125:18:3",
                        "nodeType": "YulFunctionCall",
                        "src": "28125:18:3"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "28145:6:3",
                        "nodeType": "YulIdentifier",
                        "src": "28145:6:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "28118:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "28118:6:3"
                    },
                    "nativeSrc": "28118:34:3",
                    "nodeType": "YulFunctionCall",
                    "src": "28118:34:3"
                  },
                  "nativeSrc": "28118:34:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "28118:34:3"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed",
            "nativeSrc": "27876:282:3",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "27974:9:3",
                "nodeType": "YulTypedName",
                "src": "27974:9:3",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "27985:6:3",
                "nodeType": "YulTypedName",
                "src": "27985:6:3",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "27993:6:3",
                "nodeType": "YulTypedName",
                "src": "27993:6:3",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "28004:4:3",
                "nodeType": "YulTypedName",
                "src": "28004:4:3",
                "type": ""
              }
            ],
            "src": "27876:282:3"
          },
          {
            "body": {
              "nativeSrc": "28195:95:3",
              "nodeType": "YulBlock",
              "src": "28195:95:3",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "28212:1:3",
                        "nodeType": "YulLiteral",
                        "src": "28212:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "28219:3:3",
                            "nodeType": "YulLiteral",
                            "src": "28219:3:3",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "28224:10:3",
                            "nodeType": "YulLiteral",
                            "src": "28224:10:3",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "28215:3:3",
                          "nodeType": "YulIdentifier",
                          "src": "28215:3:3"
                        },
                        "nativeSrc": "28215:20:3",
                        "nodeType": "YulFunctionCall",
                        "src": "28215:20:3"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "28205:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "28205:6:3"
                    },
                    "nativeSrc": "28205:31:3",
                    "nodeType": "YulFunctionCall",
                    "src": "28205:31:3"
                  },
                  "nativeSrc": "28205:31:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "28205:31:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "28252:1:3",
                        "nodeType": "YulLiteral",
                        "src": "28252:1:3",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "28255:4:3",
                        "nodeType": "YulLiteral",
                        "src": "28255:4:3",
                        "type": "",
                        "value": "0x21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "28245:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "28245:6:3"
                    },
                    "nativeSrc": "28245:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "28245:15:3"
                  },
                  "nativeSrc": "28245:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "28245:15:3"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "28276:1:3",
                        "nodeType": "YulLiteral",
                        "src": "28276:1:3",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "28279:4:3",
                        "nodeType": "YulLiteral",
                        "src": "28279:4:3",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "28269:6:3",
                      "nodeType": "YulIdentifier",
                      "src": "28269:6:3"
                    },
                    "nativeSrc": "28269:15:3",
                    "nodeType": "YulFunctionCall",
                    "src": "28269:15:3"
                  },
                  "nativeSrc": "28269:15:3",
                  "nodeType": "YulExpressionStatement",
                  "src": "28269:15:3"
                }
              ]
            },
            "name": "panic_error_0x21",
            "nativeSrc": "28163:127:3",
            "nodeType": "YulFunctionDefinition",
            "src": "28163:127:3"
          }
        ]
      },
      "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_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\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_encode_tuple_t_uint256_t_uint256_t_uint128_t_uint128__to_t_uint256_t_uint256_t_uint128_t_uint128__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffffffffffffffffffff))\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_ptrt_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 192) { 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 value := 0\n        value := calldataload(add(headStart, 32))\n        value2 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 64))\n        value3 := value_1\n        let value_2 := calldataload(add(headStart, 96))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n        let value_3 := 0\n        value_3 := calldataload(add(headStart, 128))\n        value5 := value_3\n        let value_4 := 0\n        value_4 := calldataload(add(headStart, 160))\n        value6 := value_4\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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 abi_decode_tuple_t_string_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2\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        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value2 := 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_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_tuple_t_uint256t_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\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_string_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_array_string_calldata_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_uint256t_array$_t_string_calldata_ptr_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\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_array_string_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_string_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_bytes32(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_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_address_payable(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_uint120(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_address_payable_t_address_t_string_memory_ptr_t_uint256_t_uint120_t_uint120_t_bool__to_t_string_memory_ptr_t_address_payable_t_address_t_string_memory_ptr_t_uint256_t_uint120_t_uint120_t_bool__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 256)\n        let tail_1 := abi_encode_string(value0, add(headStart, 256))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        tail := abi_encode_string(value3, tail_1)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), and(value5, 0xffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 192), and(value6, 0xffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 224), iszero(iszero(value7)))\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_struct$_MVO_$61_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\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        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 _1 := add(headStart, offset_1)\n        if slt(sub(dataEnd, _1), 256) { revert(0, 0) }\n        value2 := _1\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_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_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_decode_tuple_t_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\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_encode_tuple_t_address_payable_t_uint96__to_t_address_payable_t_uint96__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), and(value1, 0xffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_array$_t_string_calldata_ptr_$dyn_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_array_string_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_bytes_calldata_ptrt_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4\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_string_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value4 := value\n    }\n    function abi_decode_uint128(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_uint256t_addresst_uint128t_uint128(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\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        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value2 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value3 := value_1\n        value4 := abi_decode_uint128(add(headStart, 96))\n        value5 := abi_decode_uint128(add(headStart, 128))\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 panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\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_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_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 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_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_string_calldata(value0, value1, add(headStart, 64))\n        mstore(add(headStart, 32), value2)\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 panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_string_calldata_ptr__to_t_uint256_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), 96)\n        tail := abi_encode_string_calldata(value2, value3, add(headStart, 96))\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 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_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 read_from_calldatat_address_payable(ptr) -> returnValue\n    {\n        let value := calldataload(ptr)\n        validator_revert_address(value)\n        returnValue := value\n    }\n    function update_storage_value_offset_address_payable_to_address_payable(slot, value)\n    {\n        sstore(slot, or(and(sload(slot), shl(160, 0xffffffffffffffffffffffff)), and(value, sub(shl(160, 1), 1))))\n    }\n    function validator_revert_uint120(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function read_from_calldatat_uint120(ptr) -> returnValue\n    {\n        let value := calldataload(ptr)\n        validator_revert_uint120(value)\n        returnValue := value\n    }\n    function update_storage_value_offset_uint120_to_uint120(slot, value)\n    {\n        sstore(slot, or(and(sload(slot), not(0xffffffffffffffffffffffffffffff)), and(value, 0xffffffffffffffffffffffffffffff)))\n    }\n    function update_storage_value_offset_t_uint120_to_t_uint120(slot, value)\n    {\n        let _1 := sload(slot)\n        sstore(slot, or(and(_1, not(shl(120, 0xffffffffffffffffffffffffffffff))), and(shl(120, value), shl(120, 0xffffffffffffffffffffffffffffff))))\n    }\n    function read_from_calldatat_bool(ptr) -> returnValue\n    {\n        let value := calldataload(ptr)\n        validator_revert_bool(value)\n        returnValue := value\n    }\n    function update_storage_value_offset_bool_to_bool(slot, value)\n    {\n        let _1 := sload(slot)\n        sstore(slot, or(and(_1, not(shl(240, 255))), and(shl(240, iszero(iszero(value))), shl(240, 255))))\n    }\n    function update_storage_value_offset_0_t_struct$_MVO_$61_calldata_ptr_to_t_struct$_MVO_$61_storage(slot, value)\n    {\n        let memberValue, memberValue_1 := access_calldata_tail_t_string_calldata_ptr(value, value)\n        if gt(memberValue_1, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), memberValue_1)\n        let srcOffset := 0\n        switch gt(memberValue_1, 31)\n        case 1 {\n            let loopEnd := and(memberValue_1, 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(memberValue, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, memberValue_1)\n            {\n                sstore(dstPtr, and(calldataload(add(memberValue, srcOffset)), not(shr(and(shl(3, memberValue_1), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, memberValue_1), 1))\n        }\n        default {\n            let value_1 := 0\n            if memberValue_1\n            {\n                value_1 := calldataload(add(memberValue, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value_1, memberValue_1))\n        }\n        update_storage_value_offset_address_payable_to_address_payable(add(slot, 1), read_from_calldatat_address_payable(add(value, 32)))\n        update_storage_value_offset_address_payable_to_address_payable(add(slot, 2), read_from_calldatat_address_payable(add(value, 64)))\n        let memberValue_2, memberValue_3 := access_calldata_tail_t_string_calldata_ptr(value, add(value, 96))\n        copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(add(slot, 3), memberValue_2, memberValue_3)\n        let value_2 := 0\n        value_2 := calldataload(add(value, 128))\n        sstore(add(slot, 4), value_2)\n        let memberSlot := add(slot, 5)\n        update_storage_value_offset_uint120_to_uint120(memberSlot, read_from_calldatat_uint120(add(value, 160)))\n        update_storage_value_offset_t_uint120_to_t_uint120(memberSlot, read_from_calldatat_uint120(add(value, 192)))\n        update_storage_value_offset_bool_to_bool(memberSlot, read_from_calldatat_bool(add(value, 224)))\n    }\n    function calldata_access_string_calldata(base_ref, ptr) -> value, length\n    {\n        let rel_offset_of_tail := calldataload(ptr)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let value_1 := add(rel_offset_of_tail, base_ref)\n        length := calldataload(value_1)\n        value := add(value_1, 0x20)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        if sgt(value, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_decode_uint120(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_uint120(value)\n    }\n    function abi_decode_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_bool(value)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr_t_struct$_MVO_$61_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_struct$_MVO_$61_memory_ptr_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_string_calldata(value0, value1, add(headStart, 96))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        let memberValue0, memberValue1 := calldata_access_string_calldata(value2, value2)\n        mstore(tail_1, 0x0100)\n        let tail_2 := abi_encode_string_calldata(memberValue0, memberValue1, add(tail_1, 0x0100))\n        let value := calldataload(add(value2, 32))\n        validator_revert_address(value)\n        abi_encode_address_payable(value, add(tail_1, 32))\n        let memberValue0_1 := abi_decode_address(add(value2, 0x40))\n        abi_encode_address_payable(memberValue0_1, add(tail_1, 0x40))\n        let memberValue0_2, memberValue1_1 := calldata_access_string_calldata(value2, add(value2, 96))\n        mstore(add(tail_1, 96), sub(tail_2, tail_1))\n        let tail_3 := abi_encode_string_calldata(memberValue0_2, memberValue1_1, tail_2)\n        let value_1 := 0\n        value_1 := calldataload(add(value2, 0x80))\n        mstore(add(tail_1, 0x80), value_1)\n        let memberValue0_3 := abi_decode_uint120(add(value2, 0xa0))\n        abi_encode_uint120(memberValue0_3, add(tail_1, 0xa0))\n        let memberValue0_4 := abi_decode_uint120(add(value2, 0xc0))\n        abi_encode_uint120(memberValue0_4, add(tail_1, 0xc0))\n        let memberValue0_5 := abi_decode_bool(add(value2, 0xe0))\n        abi_encode_bool(memberValue0_5, add(tail_1, 0xe0))\n        tail := tail_3\n        mstore(add(headStart, 0x40), value3)\n    }\n    function abi_encode_tuple_t_uint256_t_string_calldata_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string_calldata(value1, value2, add(headStart, 64))\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\n    }\n    function abi_encode_tuple_t_rational_1_by_1_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 abi_encode_tuple_t_rational_3_by_1_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 abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__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), value1)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__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), value1)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n}",
      "id": 3,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "1284:36733:0:-:0;;;313:1:1;288:26;;9407:965:0;;;;;;;;;;;;;;;;;;:::i;:::-;9577:17;:41;;;;;;;-1:-1:-1;9577:41:0;;;;;;;-1:-1:-1;;;;;;9577:41:0;-1:-1:-1;;;;;9577:41:0;;;;;;;;;;9623:10;:14;;;;9648:30;;;;;;;9689:34;;;;;9734:56;;9801:8;:20;;;9926:12;9911:27;;10122:18;3925:4;10122:7;:18;:::i;:::-;10117:1;10095:24;;:21;:24;;;:45;10178:18;3925:4;10178:7;:18;:::i;:::-;10173:1;10151:24;;:21;:24;;;:45;10234:18;3925:4;10234:7;:18;:::i;:::-;10229:1;10207:24;;:21;:24;;;:45;10290:18;3925:4;10290:7;:18;:::i;:::-;10285:1;10263:24;;:21;:24;;;:45;10346:18;3925:4;10346:7;:18;:::i;:::-;10341:1;10319:24;;:21;:24;;;:45;-1:-1:-1;1284:36733:0;;-1:-1:-1;;;1284:36733:0;14:177:3;93:13;;-1:-1:-1;;;;;135:31:3;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:440::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;537:49;582:2;571:9;567:18;537:49;:::i;:::-;626:2;611:18;;;;605:25;196:440;;;;-1:-1:-1;;;196:440:3:o;641:265::-;714:9;;;745;;762:15;;;756:22;;742:37;732:168;;822:10;817:3;813:20;810:1;803:31;857:4;854:1;847:15;885:4;882:1;875:15;732:168;641:265;;;;:::o;:::-;1284:36733:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "1284:36733:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6386:45;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6386:45:0;;;;-1:-1:-1;;;6386:45:0;;;;;;;;;772:25:3;;;828:2;813:18;;806:34;;;;-1:-1:-1;;;;;876:47:3;;;856:18;;;849:75;;;;960:47;955:2;940:18;;933:75;759:3;744:19;6386:45:0;;;;;;;;20034:804;;;;;;:::i;:::-;;:::i;:::-;;4762:23;;;;;;;;;2576:25:3;;;2564:2;2549:18;4762:23:0;2430:177:3;5715:48:0;;;;;;:::i;:::-;;;;;;;;;;;;;;23474:1982;;;;;;:::i;:::-;;:::i;5856:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;4862:23;;;;;;6121:56;;;;;;:::i;:::-;;;;;;;;;;;;;;14496:659;;;;;;:::i;:::-;;:::i;26100:1175::-;;;;;;:::i;:::-;;:::i;4105:37::-;;;;;12663:1081;;;;;;:::i;:::-;;:::i;5303:26::-;;;;;;32302:635;;;;;;:::i;:::-;;:::i;29714:152::-;;;;;;:::i;:::-;;:::i;33179:438::-;;;;;;:::i;:::-;;:::i;5973:37::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;5127:25::-;;;;;;31183:832;;;;;;:::i;:::-;;:::i;30197:745::-;;;;;;:::i;:::-;;:::i;19071:522::-;;;;;;:::i;:::-;;:::i;4579:25::-;;;;;;5493:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3999:38::-;;;;;;;;-1:-1:-1;;;;;9609:32:3;;;9591:51;;9579:2;9564:18;3999:38:0;9445:203:3;4440:34:0;;;;;;:::i;:::-;;:::i;34527:218::-;;;;;;:::i;:::-;;:::i;27446:505::-;;;;;;:::i;:::-;;:::i;6255:46::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;6255:46:0;;;-1:-1:-1;;;6255:46:0;;-1:-1:-1;;;;;6255:46:0;;;;;;;-1:-1:-1;;;;;10805:32:3;;;10787:51;;-1:-1:-1;;;;;10874:39:3;;;10869:2;10854:18;;10847:67;10760:18;6255:46:0;10599:321:3;4320:40:0;;;;;4968:23;;;;;;10904:1353;;;;;;:::i;:::-;;:::i;33967:367::-;;;;;;:::i;:::-;;:::i;21881:1167::-;;;;;;:::i;:::-;;:::i;15692:3094::-;;;;;;:::i;:::-;;:::i;28299:1014::-;;;;;;:::i;:::-;;:::i;20034:804::-;367:6:1;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:1;;;;;;;;;;;363:36;419:1;410:6;:10;20256:15:0::1;::::0;:7:::1;::::0;:15:::1;::::0;20264:6;;;;20256:15:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;20242:10:::1;-1:-1:-1::0;;;;;20256:30:0;;::::1;20242:44;20238:94;;20308:24;;-1:-1:-1::0;;;20308:24:0::1;;;;;;;;;;;20238:94;20359:7;20345:10;;:21;;;;;;;:::i;:::-;;;;;;;;20411:7;20377;20385:6;;20377:15;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;:41;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20431:179:0::1;::::0;-1:-1:-1;;;20431:179:0;;20467:10:::1;20431:179;::::0;::::1;14086:51:3::0;20500:4:0::1;14153:18:3::0;;;14146:60;14222:18;;;14215:34;;;14265:18;;;14258:34;;;14341:4;14329:17;;14308:19;;;14301:46;14363:19;;;14356:35;;;14407:19;;;14400:35;;;20431:14:0::1;-1:-1:-1::0;;;;;20431:21:0::1;::::0;::::1;::::0;14058:19:3;;20431:179:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20623:66:0::1;::::0;-1:-1:-1;;;;;;;20623:13:0::1;:30;::::0;-1:-1:-1;20654:10:0::1;20674:4;20681:7:::0;20623:30:::1;:66::i;:::-;20707:52;::::0;;14620:25:3;;;20746:12:0::1;14676:2:3::0;14661:18;;14654:34;20725:10:0::1;::::0;20707:52:::1;::::0;14593:18:3;20707:52:0::1;;;;;;;-1:-1:-1::0;;;;;;;;;;;20791:6:0::1;;20799:7;20807:6;;20799:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;20775:55:::1;::::0;;;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;452:1:1;443:6;:10;-1:-1:-1;;;;;20034:804:0:o;23474:1982::-;367:6:1;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:1;;;;;;;;;;;363:36;419:1;410:6;:10;23609:15:0::1;::::0;:7:::1;::::0;:15:::1;::::0;23617:6;;;;23609:15:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;23595:10:::1;-1:-1:-1::0;;;;;23609:30:0;;::::1;23595:44;23591:94;;23661:24;;-1:-1:-1::0;;;23661:24:0::1;;;;;;;;;;;23591:94;23733:7;23700;23708:6;;23700:15;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;:40;23696:89;;;23762:23;;-1:-1:-1::0;;;23762:23:0::1;;;;;;;;;;;23696:89;23829:10;23798:18;23819:21:::0;;;:9:::1;:21;::::0;;;;:37:::1;;::::0;23865:15;;23861:1042:::1;;24083:10;24005:32;24073:21:::0;;;:9:::1;:21;::::0;;;;:33;:46:::1;::::0;24109:10;;24073:46:::1;:::i;:::-;24040:24;24053:10;24040:12;:24::i;:::-;:80;;;;:::i;:::-;24005:115;;24262:20;24318:10;24285:7;24293:6;;24285:15;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;:43;;;;:::i;:::-;24262:66:::0;-1:-1:-1;24499:39:0::1;24262:66:::0;24499:24;:39:::1;:::i;:::-;24489:7;:49;24485:97;;;24552:30;;-1:-1:-1::0;;;24552:30:0::1;;;;;;;;;;;24485:97;24686:7;24658:24;:35;24654:175;;24710:10;24700:21;::::0;;;:9:::1;:21;::::0;;;;:37:::1;;:48:::0;;24741:7;;24700:21;:48:::1;::::0;24741:7;;24700:48:::1;:::i;:::-;::::0;;;-1:-1:-1;24654:175:0::1;::::0;-1:-1:-1;24654:175:0::1;;24774:10;24764:21;::::0;;;:9:::1;:21;::::0;;;;:37:::1;;:65:::0;;24805:24;;24764:21;:65:::1;::::0;24805:24;;24764:65:::1;:::i;:::-;::::0;;;-1:-1:-1;;24654:175:0::1;23882:1021;;23861:1042;25038:7;25004;25012:6;;25004:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;:41:::0;;;;;::::1;::::0;;25213:10:::1;:21:::0;;;;::::1;::::0;;25258:47:::1;-1:-1:-1::0;;;;;25258:13:0::1;:26;25285:10;25227:7:::0;25258:26:::1;:47::i;:::-;25323:54;::::0;;14620:25:3;;;25364:12:0::1;14676:2:3::0;14661:18;;14654:34;25343:10:0::1;::::0;25323:54:::1;::::0;14593:18:3;25323:54:0::1;;;;;;;-1:-1:-1::0;;;;;;;;;;;25409:6:0::1;;25417:7;25425:6;;25417:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;25393:55:::1;::::0;;;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;452:1:1;443:6;:10;-1:-1:-1;;23474:1982:0:o;14496:659::-;8009:17;8038:1;8027:10;;:12;;;;:::i;:::-;8009:31;;;;;;;;:::i;:::-;;;;;;;;;;;7980:91;;-1:-1:-1;;;7980:91:0;;8060:10;7980:91;;;9591:51:3;-1:-1:-1;;;;;8009:31:0;;;;7980:79;;9564:18:3;;7980:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7970:124;;8084:10;;-1:-1:-1;;;8084:10:0;;;;;;;;;;;7970:124;14614:20:::1;14637:7;14645:6;;14637:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:30:::1;;::::0;-1:-1:-1;;;;;14637:30:0::1;;14682:27:::0;;;:13:::1;:27:::0;;;;;;14637:30;;-1:-1:-1;;;14678:88:0::1;;;14741:25;;-1:-1:-1::0;;;14741:25:0::1;;;;;;;;;;;14678:88;-1:-1:-1::0;;;;;15007:27:0;::::1;;::::0;;;:13:::1;:27;::::0;;;;;;:38;;;;::::1;::::0;;15060:11:::1;:22:::0;;;;::::1;::::0;;15111:36;::::1;::::0;::::1;::::0;15038:7;2576:25:3;;2564:2;2549:18;;2430:177;15111:36:0::1;;;;;;;;14603:552;14496:659:::0;;;:::o;26100:1175::-;26257:18;;;:87;;-1:-1:-1;26342:1:0;26292:26;;;:11;:26;;;;;:38;-1:-1:-1;;;;;26292:38:0;:52;;26257:87;26239:140;;;26363:16;;-1:-1:-1;;;26363:16:0;;;;;;;;;;;26239:140;26519:4;26510:5;:13;26506:40;;26532:14;;-1:-1:-1;;;26532:14:0;;;;;;;;;;;26506:40;26575:7;26583:6;;26575:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:30;;;26561:10;-1:-1:-1;;;;;26575:30:0;;;26561:44;26557:94;;26627:24;;-1:-1:-1;;;26627:24:0;;;;;;;;;;;26557:94;26743:16;26752:6;;26743:8;:16::i;:::-;26841:10;26855:1;26827:25;;;:13;:25;;;;;;:29;26823:59;;26865:17;;-1:-1:-1;;;26865:17:0;;;;;;;;;;;26823:59;26976:101;;;;;;;;27020:10;26976:101;;-1:-1:-1;;;;;26976:101:0;;;;;;;;;;-1:-1:-1;26947:26:0;;;:11;:26;;;;;;:130;;;;;;;-1:-1:-1;;;26947:130:0;-1:-1:-1;;;;;26947:130:0;;;;;;;27152:15;26959:13;;27152:7;;:15;;27160:6;;;;27152:15;:::i;:::-;;;;;;;;;;;;;;:28;;:53;;-1:-1:-1;;;;;27152:53:0;;;;-1:-1:-1;;;;;;27152:53:0;;;;;;;;;;27223:44;;;;27238:13;;27253:5;;27260:6;;;;27223:44;:::i;:::-;;;;;;;;26100:1175;;;;:::o;12663:1081::-;367:6:1;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:1;;;;;;;;;;;363:36;419:1;410:6;:10;12885:9:0::1;::::0;-1:-1:-1;;;;;12885:9:0::1;12871:10;:23;12867:53;;12903:17;;-1:-1:-1::0;;;12903:17:0::1;;;;;;;;;;;12867:53;12941:13;12929:8;:25;:42;;;-1:-1:-1::0;12958:13:0;;12929:42:::1;12925:71;;;12980:16;;-1:-1:-1::0;;;12980:16:0::1;;;;;;;;;;;12925:71;13005:19:::0;;;:55:::1;;-1:-1:-1::0;13028:32:0;;::::1;;13005:55;13001:96;;;13075:16;;-1:-1:-1::0;;;;;;13075:16:0::1;;;;;;;;;;;13001:96;13162:9;13157:583;13177:18:::0;;::::1;13157:583;;;13211:16;13230:7;13238;;13246:1;13238:10;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;13230:19;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;13276::::1;::::0;::::1;::::0;13230;;-1:-1:-1;;;;;;13276:19:0::1;::::0;13408:51:::1;;13445:14;;-1:-1:-1::0;;;13445:14:0::1;;;;;;;;;;;13408:51;13617:7;;13625:1;13617:10;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13588:25:0;::::1;;::::0;;;:13:::1;13617:10;13588:25:::0;;;;;;;:39;;13617:10;;;::::1;::::0;;;::::1;;13588:39;::::0;;;-1:-1:-1;13649:7:0;;13657:1;13649:10;;::::1;;;;;:::i;:::-;13634:11;:25:::0;;13649:10:::1;::::0;;::::1;::::0;;;::::1;;13634:25;::::0;;;-1:-1:-1;;;;;;13671:47:0;::::1;;13697:7:::0;;13705:1;13697:10;;::::1;;;;;:::i;:::-;;;;;;;13709:8;13671:47;;;;;;14620:25:3::0;;;14676:2;14661:18;;14654:34;14608:2;14593:18;;14446:248;13671:47:0::1;;;;;;;;-1:-1:-1::0;;13725:3:0::1;;13157:583;;;-1:-1:-1::0;;452:1:1;443:6;:10;-1:-1:-1;;;;12663:1081:0:o;32302:635::-;8009:17;8038:1;8027:10;;:12;;;;:::i;:::-;8009:31;;;;;;;;:::i;:::-;;;;;;;;;;;7980:91;;-1:-1:-1;;;7980:91:0;;8060:10;7980:91;;;9591:51:3;-1:-1:-1;;;;;8009:31:0;;;;7980:79;;9564:18:3;;7980:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7970:124;;8084:10;;-1:-1:-1;;;8084:10:0;;;;;;;;;;;7970:124;32417:10:::1;32395:35;;32445:65;32464:12:::0;32395:35;32487:22:::1;32445:18;:65::i;:::-;32441:489;;;32644:17;:36:::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;32644:36:0::1;-1:-1:-1::0;;;;;32644:36:0;::::1;::::0;;::::1;::::0;;;32705:10:::1;32703:12:::0;;;;::::1;::::0;;;-1:-1:-1;32829:29:0;;;:15:::1;32644:36;32829:29:::0;;;;;;;;32822:36;;-1:-1:-1;;;;;;32822:36:0;;;32878:40;;9591:51:3;;;32878:40:0::1;::::0;9564:18:3;32878:40:0::1;;;;;;;;32441:489;32367:570;32302:635:::0;:::o;29714:152::-;8009:17;8038:1;8027:10;;:12;;;;:::i;:::-;8009:31;;;;;;;;:::i;:::-;;;;;;;;;;;7980:91;;-1:-1:-1;;;7980:91:0;;8060:10;7980:91;;;9591:51:3;-1:-1:-1;;;;;8009:31:0;;;;7980:79;;9564:18:3;;7980:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7970:124;;8084:10;;-1:-1:-1;;;8084:10:0;;;;;;;;;;;7970:124;29790:8:::1;:23:::0;;;29829:29:::1;::::0;2576:25:3;;;29829:29:0::1;::::0;2564:2:3;2549:18;29829:29:0::1;;;;;;;29714:152:::0;:::o;33179:438::-;8009:17;8038:1;8027:10;;:12;;;;:::i;:::-;8009:31;;;;;;;;:::i;:::-;;;;;;;;;;;7980:91;;-1:-1:-1;;;7980:91:0;;8060:10;7980:91;;;9591:51:3;-1:-1:-1;;;;;8009:31:0;;;;7980:79;;9564:18:3;;7980:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7970:124;;8084:10;;-1:-1:-1;;;8084:10:0;;;;;;;;;;;7970:124;33284:10:::1;33262:35;;33306:61;33325:7:::0;33262:35;33343:23:::1;33306:18;:61::i;:::-;33302:311;;;33478:9;:19:::0;;-1:-1:-1;;;;;;33478:19:0::1;-1:-1:-1::0;;;;;33478:19:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;33547:24:0;;;:15:::1;:24;::::0;;;;;;;;33540:31;;-1:-1:-1;;;;;;33540:31:0;;;33582:25;;9591:51:3;;;33582:25:0::1;::::0;9564:18:3;33582:25:0::1;9445:203:3::0;5973:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5973:37:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5973:37:0;;;;;;;;;-1:-1:-1;5973:37:0;;-1:-1:-1;5973:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;5973:37:0;;;;;;;;;;;;-1:-1:-1;;;;;5973:37:0;;;;-1:-1:-1;;;;5973:37:0;;;;-1:-1:-1;;;5973:37:0;;;;;:::o;31183:832::-;8009:17;8038:1;8027:10;;:12;;;;:::i;:::-;8009:31;;;;;;;;:::i;:::-;;;;;;;;;;;7980:91;;-1:-1:-1;;;7980:91:0;;8060:10;7980:91;;;9591:51:3;-1:-1:-1;;;;;8009:31:0;;;;7980:79;;9564:18:3;;7980:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7970:124;;8084:10;;-1:-1:-1;;;8084:10:0;;;;;;;;;;;7970:124;31298:10:::1;31276:35;;31598:12:::0;31627:65:::1;31598:12:::0;31276:35;31259:14:::1;31627:18;:65::i;:::-;31623:385;;;31823:8;:23:::0;;;-1:-1:-1;;;;;31914:29:0;::::1;;::::0;;;:15:::1;:29;::::0;;;;;;31907:36;;-1:-1:-1;;;;;;31907:36:0;;;31963:33;::::1;::::0;::::1;::::0;31834:12;2576:25:3;;2564:2;2549:18;;2430:177;31963:33:0::1;;;;;;;;31623:385;31248:767;;31183:832:::0;:::o;30197:745::-;8009:17;8038:1;8027:10;;:12;;;;:::i;:::-;8009:31;;;;;;;;:::i;:::-;;;;;;;;;;;7980:91;;-1:-1:-1;;;7980:91:0;;8060:10;7980:91;;;9591:51:3;-1:-1:-1;;;;;8009:31:0;;;;7980:79;;9564:18:3;;7980:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7970:124;;8084:10;;-1:-1:-1;;;8084:10:0;;;;;;;;;;;7970:124;30551:1:::1;-1:-1:-1::0;;;;;30509:44:0::1;:7;30517:6;;30509:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;-1:-1:-1;;;;;30509:30:0::1;:44:::0;30505:336:::1;;30561:6;:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;30561:19:0;;;;;::::1;;30573:6:::0;;30561:19;::::1;:::i;:::-;;30748:8;;30726:11;30738:6;;30726:19;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30;30781:8:::1;30779:10:::0;;::::1;;::::0;;30505:336:::1;30869:4;30851:7;30859:6;;30851:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:22:::1;::::0;:15;:22:::1;:::i;:::-;;;;30889:45;30906:6;;30914:4;30920:13;30889:45;;;;;;;;;:::i;19071:522::-:0;367:6:1;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:1;;;;;;;;;;;363:36;419:1;410:6;:10;19203:15:0::1;::::0;:7:::1;::::0;:15:::1;::::0;19211:6;;;;19203:15:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;19189:10:::1;-1:-1:-1::0;;;;;19203:30:0;;::::1;19189:44;19185:94;;19255:24;;-1:-1:-1::0;;;19255:24:0::1;;;;;;;;;;;19185:94;19306:7;19292:10;;:21;;;;;;;:::i;:::-;;;;;;;;19358:7;19324;19332:6;;19324:15;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;:41;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;19378:66:0::1;::::0;-1:-1:-1;;;;;;19378:13:0::1;:30;19409:10;19429:4;19436:7:::0;19378:30:::1;:66::i;:::-;19462:52;::::0;;14620:25:3;;;19501:12:0::1;14676:2:3::0;14661:18;;14654:34;19480:10:0::1;::::0;19462:52:::1;::::0;14593:18:3;19462:52:0::1;;;;;;;-1:-1:-1::0;;;;;;;;;;;19546:6:0::1;;19554:7;19562:6;;19554:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;19530:55:::1;::::0;;;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;452:1:1;443:6;:10;-1:-1:-1;19071:522:0:o;5493:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4440:34::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4440:34:0;;-1:-1:-1;4440:34:0;:::o;34527:218::-;34611:7;34619:6;;34611:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:22;;;;-1:-1:-1;;;34611:22:0;;;;34610:23;;:68;;;34670:8;;34637:7;34645:6;;34637:15;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;:41;34610:68;34592:146;;;34712:14;;-1:-1:-1;;;34712:14:0;;;;;;;;;;;27446:505;27695:7;27703:6;;27695:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:30;;;27681:10;-1:-1:-1;;;;;27695:30:0;;;27681:44;;;:122;;-1:-1:-1;27742:26:0;;;;:11;:26;;;;;:38;-1:-1:-1;;;;;27742:38:0;27792:10;27742:61;;27681:122;27663:183;;;27822:24;;-1:-1:-1;;;27822:24:0;;;;;;;;;;;27663:183;27864:26;;;;:11;:26;;;;;;27857:33;;;;27906:37;;;;;27876:13;;27936:6;;;;27906:37;:::i;10904:1353::-;11076:4;11178:24;;11158:165;11204:8;;11158:165;;11246:17;11264:6;11246:17;11264:4;:6;:::i;:::-;11246:25;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;11246:25:0;11232:10;:39;11228:90;;11294:5;11280:19;;11306:5;;11228:90;11214:6;;;;:::i;:::-;;;;11158:165;;;;11337:11;11333:46;;;11357:22;;-1:-1:-1;;;11357:22:0;;;;;;;;;;;11333:46;11392:20;11415:7;11423;;11431:1;11423:10;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11415:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11484:23;;;;;-1:-1:-1;;;;;11484:23:0;11470:38;;;;:13;:38;;;;;;;:43;;11512:1;11470:43;;;;;;11528:11;:16;;;;;;;11415:19;;-1:-1:-1;11851:327:0;11871:18;;;11851:327;;;11908:18;11929:7;11937;;11945:1;11937:10;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11929:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:34;;;;;-1:-1:-1;;;;;11929:34:0;;12009:25;;;:13;:25;;;;;12007:27;;;;;;12055:11;12053:13;;;;;;14620:25:3;;;12152:13:0;14661:18:3;;;14654:34;;;;12085:3:0;;;;;11929:34;;-1:-1:-1;11929:34:0;;12123:43;;14593:18:3;12123:43:0;;;;;;;11893:285;11851:327;;;-1:-1:-1;12207:23:0;;;;12193:56;;;12232:1;14620:25:3;;12235:13:0;14676:2:3;14661:18;;14654:34;-1:-1:-1;;;;;12207:23:0;;;;12193:56;;14593:18:3;12193:56:0;14446:248:3;33967:367:0;34113:7;34122:9;34133;34146:24;34162:7;;34146:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34146:15:0;;-1:-1:-1;;;34146:24:0:i;:::-;34112:58;;;;;;34181:17;34201:27;34211:7;34220:1;34223;34226;34201:27;;;;;;;;;;;;;;;;;27026:25:3;;;27099:4;27087:17;;;;27082:2;27067:18;;27060:45;27136:2;27121:18;;27114:34;27179:2;27164:18;;27157:34;27013:3;26998:19;;26799:398;34201:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34181:47;;34277:9;-1:-1:-1;;;;;34243:43:0;:7;34251:6;;34243:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:30;;;-1:-1:-1;;;;;34243:30:0;:43;34239:87;;34308:18;;-1:-1:-1;;;34308:18:0;;;;;;;;;;;34239:87;34101:233;;;;33967:367;;;;;:::o;21881:1167::-;22082:10;-1:-1:-1;;;;;22096:15:0;22082:29;;22078:63;;22120:21;;-1:-1:-1;;;22120:21:0;;;;;;;;;;;22078:63;22167:7;22175:6;;22167:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:30;;;-1:-1:-1;;;;;22156:41:0;;;22167:30;;22156:41;22152:91;;22219:24;;-1:-1:-1;;;22219:24:0;;;;;;;;;;;22152:91;22270:7;22256:10;;:21;;;;;;;:::i;:::-;;;;;;;;22322:7;22288;22296:6;;22288:15;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;;:41;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;22399:18:0;;;;;;:9;:18;;;;;:34;;;:39;22395:429;;-1:-1:-1;;;;;22516:18:0;;;;;;:9;:18;;;;;:41;;22550:7;;22516:18;:41;;22550:7;;22516:41;:::i;:::-;;;;-1:-1:-1;;;;;;;22563:18:0;;;;;;:9;:18;;;;;:34;;:45;;22601:7;;22563:18;:45;;22601:7;;22563:45;:::i;:::-;;;;-1:-1:-1;22395:429:0;;-1:-1:-1;22395:429:0;;22680:138;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22680:138:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22659:18:0;;-1:-1:-1;22659:18:0;;;:9;:18;;;;;;;:159;;;;;;;;;;;;;;;;-1:-1:-1;;;22659:159:0;;;;;;;;;;;;22395:429;22836:66;-1:-1:-1;;;;;22836:13:0;:30;22867:10;22887:4;22894:7;22836:30;:66::i;:::-;22920:49;;;14620:25:3;;;22956:12:0;14676:2:3;14661:18;;14654:34;-1:-1:-1;;;;;22920:49:0;;;;;14593:18:3;22920:49:0;;;;;;;-1:-1:-1;;;;;;;;;;;23001:6:0;;23009:7;23017:6;;23009:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:30;;;22985:55;;;;;:::i;:::-;;;;;;;;21881:1167;;;;;;:::o;15692:3094::-;367:6:1;;377:1;367:11;363:36;;387:12;;-1:-1:-1;;;387:12:1;;;;;;;;;;;363:36;419:1;410:6;:10;15782:15:0::1;::::0;:7:::1;::::0;:15:::1;::::0;15790:6;;;;15782:15:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30:::1;;::::0;15768:10:::1;-1:-1:-1::0;;;;;15782:30:0;;::::1;15768:44;15764:94;;15834:24;;-1:-1:-1::0;;;15834:24:0::1;;;;;;;;;;;15764:94;15927:15;15945:7;15953:6;;15945:15;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:28:::1;;::::0;16023:10:::1;15945:28;16009:25:::0;;;:13:::1;:25:::0;;;;;;;-1:-1:-1;;;;;15945:28:0;;::::1;::::0;-1:-1:-1;16009:25:0;15945:28;16091:27:::1;16106:12;16091;:27;:::i;:::-;16070:48:::0;-1:-1:-1;16220:19:0::1;3830:7;16238:1;16220:19;:::i;:::-;16207:10;:32;16203:660;;;16248:19;;-1:-1:-1::0;;;16248:19:0::1;;;;;;;;;;;16203:660;3830:7;16287:10;:29;16283:580;;16327:1;16318:10;;16283:580;;;3830:7;16362:10;:28;:65;;;;-1:-1:-1::0;16408:19:0::1;3830:7;16426:1;16408:19;:::i;:::-;16394:10;:33;;16362:65;16344:519;;;16448:1;16439:10;;16344:519;;;16496:19;3830:7;16514:1;16496:19;:::i;:::-;16483:10;:32;:82;;;;-1:-1:-1::0;16546:19:0::1;3830:7;16564:1;16546:19;:::i;:::-;16532:10;:33;;16483:82;16465:398;;;16586:1;16577:10;;16465:398;;;16634:19;3830:7;16652:1;16634:19;:::i;:::-;16621:10;:32;:82;;;;-1:-1:-1::0;16684:19:0::1;3830:7;16702:1;16684:19;:::i;:::-;16670:10;:33;;16621:82;16603:260;;;16724:1;16715:10;;16603:260;;;16772:19;3830:7;16790:1;16772:19;:::i;:::-;16759:10;:32;:82;;;;-1:-1:-1::0;16822:19:0::1;3830:7;16840:1;16822:19;:::i;:::-;16808:10;:33;;16759:82;16741:122;;;16862:1;16853:10;;16741:122;17401:24;17489;17507:6:::0;3830:7:::1;17489:24;:::i;:::-;17429:29;::::0;;;:21:::1;:29;::::0;;;;;:55:::1;::::0;17474:10;;17429:55:::1;:::i;:::-;17428:86;;;;:::i;:::-;17401:113;;17688:21;17763:11;;17730:16;17713:14;:33;;;;:::i;:::-;17712:62;;;;:::i;:::-;17688:86;;17951:14;17936:11;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17997:10:0::1;17983:25;::::0;;;:13:::1;:25;::::0;;;;;;;17976:32;;;18219:29;;;:21:::1;:29:::0;;;;;:46;;18252:13;;17983:25;18219:46:::1;::::0;18252:13;;18219:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;18435:13:0::1;18476:20:::0;;;:11:::1;:20;::::0;;;;:25;3925:4:::1;::::0;18452:50:::1;::::0;-1:-1:-1;;;18476:25:0;::::1;-1:-1:-1::0;;;;;18476:25:0::1;18452:13:::0;:50:::1;:::i;:::-;18451:76;;;;:::i;:::-;18435:92:::0;-1:-1:-1;;;;;;18565:14:0::1;:19;;18585:10;18597:21;18435:92:::0;18597:13;:21:::1;:::i;:::-;18565:54;::::0;-1:-1:-1;;;;;;18565:54:0::1;::::0;;;;;;-1:-1:-1;;;;;27789:32:3;;;18565:54:0::1;::::0;::::1;27771:51:3::0;27838:18;;;27831:34;27744:18;;18565:54:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18634:5;18643:1;18634:10;18630:89;;18679:20;::::0;;;:11:::1;:20;::::0;;;;;;:32;18659:60;;-1:-1:-1;;;18659:60:0;;-1:-1:-1;;;;;18679:32:0;;::::1;18659:60;::::0;::::1;27771:51:3::0;27838:18;;;27831:34;;;18659:14:0::1;:19:::0;;::::1;::::0;::::1;::::0;27744:18:3;;18659:60:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18630:89;18737:41;::::0;2576:25:3;;;18751:10:0::1;::::0;18737:41:::1;::::0;2564:2:3;2549:18;18737:41:0::1;;;;;;;-1:-1:-1::0;;452:1:1;443:6;:10;-1:-1:-1;;;;;;;15692:3094:0:o;28299:1014::-;28445:7;28453:6;;28445:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:30;;;28431:10;-1:-1:-1;;;;;28445:30:0;;;28431:44;28427:94;;28497:24;;-1:-1:-1;;;28497:24:0;;;;;;;;;;;28427:94;28603:10;28617:1;28589:25;;;:13;:25;;;;;;:29;28585:59;;28627:17;;-1:-1:-1;;;28627:17:0;;;;;;;;;;;28585:59;28700:21;;;;;:93;;-1:-1:-1;28791:1:0;28738:29;;;:11;:29;;;;;:41;-1:-1:-1;;;;;28738:41:0;:55;28700:93;28682:148;;;28812:18;;-1:-1:-1;;;28812:18:0;;;;;;;;;;;28682:148;28922:16;28931:6;;28922:8;:16::i;:::-;29003:22;29028:7;29036:6;;29028:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:28;;;-1:-1:-1;;;;;29028:28:0;;-1:-1:-1;29207:16:0;;29168:7;;:15;;29176:6;;;;29168:15;:::i;:::-;;;;;;;;;;;;;:28;;;:56;;;;;-1:-1:-1;;;;;29168:56:0;;;;;-1:-1:-1;;;;;29168:56:0;;;;;;29264:16;29242:63;29282:14;29298:6;;29242:63;;;;;;;;:::i;5393:1652:2:-;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:2:o;37216:798:0:-;-1:-1:-1;;;;;37353:21:0;;37296:16;37353:21;;;:9;:21;;;;;37417;;;;-1:-1:-1;;;;;37417:21:0;;;;-1:-1:-1;;;37480:19:0;;;37515:12;:29;-1:-1:-1;37511:496:0;;37572:1;37561:12;;37511:496;;;37611:11;37595:12;:27;37591:416;;37650:20;;;-1:-1:-1;37591:416:0;;;37967:27;37981:13;37967:11;:27;:::i;:::-;37916:28;37931:13;37916:12;:28;:::i;:::-;37892:20;;:53;;;;:::i;:::-;37891:104;;;;:::i;:::-;37880:115;;37591:416;37314:700;;;37216:798;;;:::o;3669:1506:2:-;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:2:o;35028:1080:0:-;-1:-1:-1;;;;;35209:25:0;;35160:4;35209:25;;;:15;:25;;;;;:36;35160:4;;35209:36;;-1:-1:-1;;;;;;35209:48:0;35205:873;;-1:-1:-1;;;;;35274:25:0;;;;;;:15;:25;;;;;:46;;;;;;-1:-1:-1;;35274:46:0;;;;;;35366:8;;35274:25;-1:-1:-1;;35326:48:0;;-1:-1:-1;;;35366:8:0;35326:48;;;;;;;;:::i;:::-;;;;;;35205:873;;;-1:-1:-1;;;;;35404:25:0;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;35404:48:0;;;;;;;;;;:113;;-1:-1:-1;;;;;;35469:25:0;;;;;;:15;:25;;;;;:36;-1:-1:-1;;;;;;35469:48:0;;;-1:-1:-1;;;35469:36:0;;;;;:48;;35404:113;:177;;;;-1:-1:-1;;;;;;35545:25:0;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;35534:47:0;;;;;;;;35404:177;:234;;;;-1:-1:-1;;;;;;35601:25:0;;;;;;:15;:25;;;;;:37;-1:-1:-1;;;35601:37:0;;;;35589:49;;;;;;;;:::i;:::-;:8;:49;;;;;;;;:::i;:::-;;35404:234;35386:692;;;-1:-1:-1;;;;;35650:25:0;;;;;;:15;:25;;;;;:46;;-1:-1:-1;;35650:46:0;-1:-1:-1;;;35650:46:0;;;;;;;;35386:692;;;-1:-1:-1;;;;;35730:25:0;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;35730:48:0;;;;;;;;;;:113;;-1:-1:-1;;;;;;35795:25:0;;;;;;:15;:25;;;;;:36;-1:-1:-1;;;;;;35795:48:0;;;-1:-1:-1;;;35795:36:0;;;;;:48;;;35730:113;:177;;;;-1:-1:-1;;;;;;35871:25:0;;;;;;:15;:25;;;;;:36;;;-1:-1:-1;;;;;;35860:47:0;;;;;;;;35730:177;:241;;;;-1:-1:-1;;;;;;35935:25:0;;;;;;:15;:25;;;;;:36;-1:-1:-1;;;;;;35924:47:0;;;-1:-1:-1;;;35935:36:0;;;;;35924:47;;;35730:241;:298;;;;-1:-1:-1;;;;;;35991:25:0;;;;;;:15;:25;;;;;:37;-1:-1:-1;;;35991:37:0;;;;35979:49;;;;;;;;:::i;:::-;:8;:49;;;;;;;;:::i;:::-;;35730:298;35712:366;;;36062:4;36055:11;;;;;35712:366;36095:5;36088:12;;;35028:1080;;;;;;:::o;36338:523::-;36421:7;36430:9;36441;36467:4;:11;36482:2;36467:17;36463:50;;36493:20;;-1:-1:-1;;;36493:20:0;;;;;;;;;;;36463:50;-1:-1:-1;;;36628:2:0;36618:13;;36612:20;36700:2;36690:13;;36684:20;36809:2;36799:13;;;36793:20;36790:1;36785:29;;36612:20;;36684;36338:523::o;14:131:3:-;-1:-1:-1;;;;;89:31:3;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:134::-;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:247::-;348:6;401:2;389:9;380:7;376:23;372:32;369:52;;;417:1;414;407:12;369:52;456:9;443:23;475:31;500:5;475:31;:::i;1019:348::-;1071:8;1081:6;1135:3;1128:4;1120:6;1116:17;1112:27;1102:55;;1153:1;1150;1143:12;1102:55;-1:-1:-1;1176:20:3;;-1:-1:-1;;;;;1208:30:3;;1205:50;;;1251:1;1248;1241:12;1205:50;1288:4;1280:6;1276:17;1264:29;;1340:3;1333:4;1324:6;1316;1312:19;1308:30;1305:39;1302:59;;;1357:1;1354;1347:12;1302:59;1019:348;;;;;:::o;1372:1053::-;1486:6;1494;1502;1510;1518;1526;1534;1587:3;1575:9;1566:7;1562:23;1558:33;1555:53;;;1604:1;1601;1594:12;1555:53;1644:9;1631:23;-1:-1:-1;;;;;1669:6:3;1666:30;1663:50;;;1709:1;1706;1699:12;1663:50;1748:59;1799:7;1790:6;1779:9;1775:22;1748:59;:::i;:::-;1826:8;;-1:-1:-1;1722:85:3;-1:-1:-1;;1930:2:3;1915:18;;1902:32;;-1:-1:-1;2031:2:3;2016:18;;2003:32;;-1:-1:-1;2113:2:3;2098:18;;2085:32;2161:4;2148:18;;2136:31;;2126:59;;2181:1;2178;2171:12;2126:59;1372:1053;;;;-1:-1:-1;1372:1053:3;;;;2204:7;2284:3;2269:19;;2256:33;;-1:-1:-1;2388:3:3;2373:19;;;2360:33;;1372:1053;-1:-1:-1;;1372:1053:3:o;2794:525::-;2874:6;2882;2890;2943:2;2931:9;2922:7;2918:23;2914:32;2911:52;;;2959:1;2956;2949:12;2911:52;2999:9;2986:23;-1:-1:-1;;;;;3024:6:3;3021:30;3018:50;;;3064:1;3061;3054:12;3018:50;3103:59;3154:7;3145:6;3134:9;3130:22;3103:59;:::i;:::-;3181:8;;3077:85;;-1:-1:-1;3285:2:3;3270:18;;;;3257:32;;2794:525;-1:-1:-1;;;;2794:525:3:o;3324:127::-;3385:10;3380:3;3376:20;3373:1;3366:31;3416:4;3413:1;3406:15;3440:4;3437:1;3430:15;3456:945;3525:6;3578:2;3566:9;3557:7;3553:23;3549:32;3546:52;;;3594:1;3591;3584:12;3546:52;3634:9;3621:23;-1:-1:-1;;;;;3659:6:3;3656:30;3653:50;;;3699:1;3696;3689:12;3653:50;3722:22;;3775:4;3767:13;;3763:27;-1:-1:-1;3753:55:3;;3804:1;3801;3794:12;3753:55;3844:2;3831:16;-1:-1:-1;;;;;3862:6:3;3859:30;3856:56;;;3892:18;;:::i;:::-;3941:2;3935:9;4033:2;3995:17;;-1:-1:-1;;3991:31:3;;;4024:2;3987:40;3983:54;3971:67;;-1:-1:-1;;;;;4053:34:3;;4089:22;;;4050:62;4047:88;;;4115:18;;:::i;:::-;4151:2;4144:22;4175;;;4216:15;;;4233:2;4212:24;4209:37;-1:-1:-1;4206:57:3;;;4259:1;4256;4249:12;4206:57;4315:6;4310:2;4306;4302:11;4297:2;4289:6;4285:15;4272:50;4368:1;4342:19;;;4363:2;4338:28;4331:39;;;;4346:6;3456:945;-1:-1:-1;;;;3456:945:3:o;4406:226::-;4465:6;4518:2;4506:9;4497:7;4493:23;4489:32;4486:52;;;4534:1;4531;4524:12;4486:52;-1:-1:-1;4579:23:3;;4406:226;-1:-1:-1;4406:226:3:o;4637:645::-;4726:6;4734;4742;4750;4803:2;4791:9;4782:7;4778:23;4774:32;4771:52;;;4819:1;4816;4809:12;4771:52;4864:23;;;-1:-1:-1;4984:2:3;4969:18;;4956:32;;-1:-1:-1;5065:2:3;5050:18;;5037:32;-1:-1:-1;;;;;5081:30:3;;5078:50;;;5124:1;5121;5114:12;5078:50;5163:59;5214:7;5205:6;5194:9;5190:22;5163:59;:::i;:::-;4637:645;;;;-1:-1:-1;5241:8:3;-1:-1:-1;;;;4637:645:3:o;5287:375::-;5358:8;5368:6;5422:3;5415:4;5407:6;5403:17;5399:27;5389:55;;5440:1;5437;5430:12;5389:55;-1:-1:-1;5463:20:3;;-1:-1:-1;;;;;5495:30:3;;5492:50;;;5538:1;5535;5528:12;5492:50;5575:4;5567:6;5563:17;5551:29;;5635:3;5628:4;5618:6;5615:1;5611:14;5603:6;5599:27;5595:38;5592:47;5589:67;;;5652:1;5649;5642:12;5667:910;5810:6;5818;5826;5834;5842;5895:2;5883:9;5874:7;5870:23;5866:32;5863:52;;;5911:1;5908;5901:12;5863:52;5956:23;;;-1:-1:-1;6054:2:3;6039:18;;6026:32;-1:-1:-1;;;;;6070:30:3;;6067:50;;;6113:1;6110;6103:12;6067:50;6152:78;6222:7;6213:6;6202:9;6198:22;6152:78;:::i;:::-;6249:8;;-1:-1:-1;6126:104:3;-1:-1:-1;;6337:2:3;6322:18;;6309:32;-1:-1:-1;;;;;6353:32:3;;6350:52;;;6398:1;6395;6388:12;6350:52;6437:80;6509:7;6498:8;6487:9;6483:24;6437:80;:::i;:::-;5667:910;;;;-1:-1:-1;5667:910:3;;-1:-1:-1;6536:8:3;;6411:106;5667:910;-1:-1:-1;;;5667:910:3:o;6813:400::-;6855:3;6893:5;6887:12;6920:6;6915:3;6908:19;6945:1;6955:139;6969:6;6966:1;6963:13;6955:139;;;7077:4;7062:13;;;7058:24;;7052:31;7032:11;;;7028:22;;7021:63;6984:12;6955:139;;;6959:3;7139:1;7132:4;7123:6;7118:3;7114:16;7110:27;7103:38;7202:4;7195:2;7191:7;7186:2;7178:6;7174:15;7170:29;7165:3;7161:39;7157:50;7150:57;;;6813:400;;;;:::o;7553:971::-;7928:3;7917:9;7910:22;7891:4;7955:46;7996:3;7985:9;7981:19;7973:6;7955:46;:::i;:::-;-1:-1:-1;;;;;8037:32:3;;;8032:2;8017:18;;8010:60;8106:32;;8101:2;8086:18;;8079:60;8175:22;;;8170:2;8155:18;;8148:50;8215:33;8179:6;8233;8215:33;:::i;:::-;8279:3;8264:19;;8257:35;;;;-1:-1:-1;;;;;;;8329:45:3;;;8323:3;8308:19;;8301:74;8412:45;;;;8406:3;8391:19;;8384:74;8502:14;;8495:22;8489:3;8474:19;;;8467:51;8207:41;7553:971;-1:-1:-1;;;;7553:971:3:o;8529:686::-;8630:6;8638;8646;8699:2;8687:9;8678:7;8674:23;8670:32;8667:52;;;8715:1;8712;8705:12;8667:52;8755:9;8742:23;-1:-1:-1;;;;;8780:6:3;8777:30;8774:50;;;8820:1;8817;8810:12;8774:50;8859:59;8910:7;8901:6;8890:9;8886:22;8859:59;:::i;:::-;8937:8;;-1:-1:-1;8833:85:3;-1:-1:-1;;9025:2:3;9010:18;;8997:32;-1:-1:-1;;;;;9041:32:3;;9038:52;;;9086:1;9083;9076:12;9038:52;9109:24;;9167:3;9149:16;;;9145:26;9142:46;;;9184:1;9181;9174:12;9142:46;9207:2;9197:12;;;8529:686;;;;;:::o;9220:220::-;9369:2;9358:9;9351:21;9332:4;9389:45;9430:2;9419:9;9415:18;9407:6;9389:45;:::i;9653:411::-;9724:6;9732;9785:2;9773:9;9764:7;9760:23;9756:32;9753:52;;;9801:1;9798;9791:12;9753:52;9841:9;9828:23;-1:-1:-1;;;;;9866:6:3;9863:30;9860:50;;;9906:1;9903;9896:12;9860:50;9945:59;9996:7;9987:6;9976:9;9972:22;9945:59;:::i;:::-;10023:8;;9919:85;;-1:-1:-1;9653:411:3;-1:-1:-1;;;;9653:411:3:o;10069:525::-;10149:6;10157;10165;10218:2;10206:9;10197:7;10193:23;10189:32;10186:52;;;10234:1;10231;10224:12;10186:52;10279:23;;;-1:-1:-1;10377:2:3;10362:18;;10349:32;-1:-1:-1;;;;;10393:30:3;;10390:50;;;10436:1;10433;10426:12;10390:50;10475:59;10526:7;10517:6;10506:9;10502:22;10475:59;:::i;:::-;10069:525;;10553:8;;-1:-1:-1;10449:85:3;;-1:-1:-1;;;;10069:525:3:o;10925:457::-;11023:6;11031;11084:2;11072:9;11063:7;11059:23;11055:32;11052:52;;;11100:1;11097;11090:12;11052:52;11140:9;11127:23;-1:-1:-1;;;;;11165:6:3;11162:30;11159:50;;;11205:1;11202;11195:12;11159:50;11244:78;11314:7;11305:6;11294:9;11290:22;11244:78;:::i;11387:829::-;11487:6;11495;11503;11511;11519;11572:2;11560:9;11551:7;11547:23;11543:32;11540:52;;;11588:1;11585;11578:12;11540:52;11628:9;11615:23;-1:-1:-1;;;;;11653:6:3;11650:30;11647:50;;;11693:1;11690;11683:12;11647:50;11732:59;11783:7;11774:6;11763:9;11759:22;11732:59;:::i;:::-;11810:8;;-1:-1:-1;11706:85:3;-1:-1:-1;;11898:2:3;11883:18;;11870:32;-1:-1:-1;;;;;11914:32:3;;11911:52;;;11959:1;11956;11949:12;11911:52;11998:61;12051:7;12040:8;12029:9;12025:24;11998:61;:::i;:::-;11387:829;;;;-1:-1:-1;12078:8:3;12182:2;12167:18;12154:32;;11387:829;-1:-1:-1;;;;11387:829:3:o;12221:188::-;12289:20;;-1:-1:-1;;;;;12338:46:3;;12328:57;;12318:85;;12399:1;12396;12389:12;12414:816;12521:6;12529;12537;12545;12553;12561;12614:3;12602:9;12593:7;12589:23;12585:33;12582:53;;;12631:1;12628;12621:12;12582:53;12671:9;12658:23;-1:-1:-1;;;;;12696:6:3;12693:30;12690:50;;;12736:1;12733;12726:12;12690:50;12775:59;12826:7;12817:6;12806:9;12802:22;12775:59;:::i;:::-;12853:8;;-1:-1:-1;12749:85:3;-1:-1:-1;;12957:2:3;12942:18;;12929:32;;-1:-1:-1;13037:2:3;13022:18;;13009:32;13050:33;13009:32;13050:33;:::i;:::-;13102:7;-1:-1:-1;13128:38:3;13162:2;13147:18;;13128:38;:::i;:::-;13118:48;;13185:39;13219:3;13208:9;13204:19;13185:39;:::i;:::-;13175:49;;12414:816;;;;;;;;:::o;13235:273::-;13420:6;13412;13407:3;13394:33;13376:3;13446:16;;13471:13;;;13446:16;13235:273;-1:-1:-1;13235:273:3:o;13513:127::-;13574:10;13569:3;13565:20;13562:1;13555:31;13605:4;13602:1;13595:15;13629:4;13626:1;13619:15;13645:125;13710:9;;;13731:10;;;13728:36;;;13744:18;;:::i;:::-;13645:125;;;;:::o;14699:267::-;14788:6;14783:3;14776:19;14840:6;14833:5;14826:4;14821:3;14817:14;14804:43;-1:-1:-1;14892:1:3;14867:16;;;14885:4;14863:27;;;14856:38;;;;14948:2;14927:15;;;-1:-1:-1;;14923:29:3;14914:39;;;14910:50;;14699:267::o;14971:318::-;15158:2;15147:9;15140:21;15121:4;15178:62;15236:2;15225:9;15221:18;15213:6;15205;15178:62;:::i;:::-;15170:70;;15276:6;15271:2;15260:9;15256:18;15249:34;14971:318;;;;;;:::o;15294:128::-;15361:9;;;15382:11;;;15379:37;;;15396:18;;:::i;15427:127::-;15488:10;15483:3;15479:20;15476:1;15469:31;15519:4;15516:1;15509:15;15543:4;15540:1;15533:15;15559:118;15645:5;15638:13;15631:21;15624:5;15621:32;15611:60;;15667:1;15664;15657:12;15682:245;15749:6;15802:2;15790:9;15781:7;15777:23;15773:32;15770:52;;;15818:1;15815;15808:12;15770:52;15850:9;15844:16;15869:28;15891:5;15869:28;:::i;15932:389::-;16147:6;16136:9;16129:25;16190:6;16185:2;16174:9;16170:18;16163:34;16233:2;16228;16217:9;16213:18;16206:30;16110:4;16253:62;16311:2;16300:9;16296:18;16288:6;16280;16253:62;:::i;:::-;16245:70;15932:389;-1:-1:-1;;;;;;15932:389:3:o;16326:522::-;16404:4;16410:6;16470:11;16457:25;16564:2;16560:7;16549:8;16533:14;16529:29;16525:43;16505:18;16501:68;16491:96;;16583:1;16580;16573:12;16491:96;16610:33;;16662:20;;;-1:-1:-1;;;;;;16694:30:3;;16691:50;;;16737:1;16734;16727:12;16691:50;16770:4;16758:17;;-1:-1:-1;16801:14:3;16797:27;;;16787:38;;16784:58;;;16838:1;16835;16828:12;16853:380;16932:1;16928:12;;;;16975;;;16996:61;;17050:4;17042:6;17038:17;17028:27;;16996:61;17103:2;17095:6;17092:14;17072:18;17069:38;17066:161;;17149:10;17144:3;17140:20;17137:1;17130:31;17184:4;17181:1;17174:15;17212:4;17209:1;17202:15;17066:161;;16853:380;;;:::o;17364:518::-;17466:2;17461:3;17458:11;17455:421;;;17502:5;17499:1;17492:16;17546:4;17543:1;17533:18;17616:2;17604:10;17600:19;17597:1;17593:27;17587:4;17583:38;17652:4;17640:10;17637:20;17634:47;;;-1:-1:-1;17675:4:3;17634:47;17730:2;17725:3;17721:12;17718:1;17714:20;17708:4;17704:31;17694:41;;17785:81;17803:2;17796:5;17793:13;17785:81;;;17862:1;17848:16;;17829:1;17818:13;17785:81;;;17789:3;;17364:518;;;:::o;18058:1198::-;-1:-1:-1;;;;;18177:3:3;18174:27;18171:53;;;18204:18;;:::i;:::-;18233:94;18323:3;18283:38;18315:4;18309:11;18283:38;:::i;:::-;18277:4;18233:94;:::i;:::-;18353:1;18378:2;18373:3;18370:11;18395:1;18390:608;;;;19042:1;19059:3;19056:93;;;-1:-1:-1;19115:19:3;;;19102:33;19056:93;-1:-1:-1;;18015:1:3;18011:11;;;18007:24;18003:29;17993:40;18039:1;18035:11;;;17990:57;19162:78;;18363:887;;18390:608;17311:1;17304:14;;;17348:4;17335:18;;-1:-1:-1;;18426:17:3;;;18541:229;18555:7;18552:1;18549:14;18541:229;;;18644:19;;;18631:33;18616:49;;18751:4;18736:20;;;;18704:1;18692:14;;;;18571:12;18541:229;;;18545:3;18798;18789:7;18786:16;18783:159;;;18922:1;18918:6;18912:3;18906;18903:1;18899:11;18895:21;18891:34;18887:39;18874:9;18869:3;18865:19;18852:33;18848:79;18840:6;18833:95;18783:159;;;18985:1;18979:3;18976:1;18972:11;18968:19;18962:4;18955:33;18363:887;;18058:1198;;;:::o;19261:184::-;19314:11;19366:3;19353:17;19379:31;19404:5;19379:31;:::i;19450:210::-;19569:11;;-1:-1:-1;;;;;;19565:54:3;-1:-1:-1;;;;;19621:31:3;;;;19562:91;;;;19549:105;;19450:210::o;19665:144::-;-1:-1:-1;;;;;19744:5:3;19740:44;19733:5;19730:55;19720:83;;19799:1;19796;19789:12;19814:176;19859:11;19911:3;19898:17;19924:31;19949:5;19924:31;:::i;20476:170::-;20518:11;20570:3;20557:17;20583:28;20605:5;20583:28;:::i;20867:2427::-;21027:56;21077:5;21070;21027:56;:::i;:::-;-1:-1:-1;;;;;21098:13:3;21095:37;21092:63;;;21135:18;;:::i;:::-;21164:104;21254:13;21214:38;21246:4;21240:11;21214:38;:::i;:::-;21208:4;21164:104;:::i;:::-;21294:1;21329:2;21314:13;21311:21;21346:1;21341:664;;;;22051:1;22068:13;22065:113;;;-1:-1:-1;22136:27:3;;;22123:41;22065:113;-1:-1:-1;;18015:1:3;18011:11;;;18007:24;18003:29;17993:40;18039:1;18035:11;;;17990:57;22191:90;;21304:987;;21341:664;17311:1;17304:14;;;17348:4;17335:18;;-1:-1:-1;;21377:27:3;;;21502:237;21516:7;21513:1;21510:14;21502:237;;;21605:27;;;21592:41;21577:57;;21720:4;21705:20;;;;21673:1;21661:14;;;;21532:12;21502:237;;;21506:3;21767:13;21758:7;21755:26;21752:187;;;21919:1;21915:6;21909:3;21893:13;21890:1;21886:21;21882:31;21878:44;21874:49;21861:9;21848:11;21844:27;21831:41;21827:97;21819:6;21812:113;21752:187;;;21992:1;21976:13;21973:1;21969:21;21965:29;21959:4;21952:43;21304:987;;;;;22300:129;22377:51;22424:2;22417:5;22413:14;22377:51;:::i;:::-;22373:1;22367:4;22363:12;22300:129;:::i;:::-;22438;22515:51;22562:2;22555:5;22551:14;22515:51;:::i;:::-;22511:1;22505:4;22501:12;22438:129;:::i;:::-;22612:65;22673:2;22666:5;22662:14;22655:5;22612:65;:::i;:::-;22686:117;22789:13;22774;22770:1;22764:4;22760:12;22686:117;:::i;:::-;-1:-1:-1;;22872:3:3;22861:15;;22848:29;22903:1;22893:12;;22886:29;22952:1;22942:12;;22963:104;23022:44;23061:3;23050:15;;23022:44;:::i;:::-;20098:11;;-1:-1:-1;;;;;;20094:55:3;-1:-1:-1;;;;;20151:44:3;;;;20091:105;20078:119;;19995:208;22963:104;23076:108;23139:44;23178:3;23171:5;23167:15;23139:44;:::i;:::-;23127:10;20305:11;;-1:-1:-1;;;;20341:56:3;20424:3;20403:15;;;;-1:-1:-1;;;20399:64:3;20338:126;;;;20325:140;;20208:263;23076:108;23193:95;23246:41;23282:3;23275:5;23271:15;23246:41;:::i;:::-;23234:10;20738:11;;-1:-1:-1;;;;20774:27:3;20823:13;;20816:21;20844:3;20807:31;-1:-1:-1;;;20803:51:3;20771:84;;;;20758:98;;20651:211;23299:501;23358:5;23365:6;23425:3;23412:17;23511:2;23507:7;23496:8;23480:14;23476:29;23472:43;23452:18;23448:68;23438:96;;23530:1;23527;23520:12;23438:96;23558:33;;23662:4;23649:18;;;-1:-1:-1;23610:21:3;;-1:-1:-1;;;;;;23679:30:3;;23676:50;;;23722:1;23719;23712:12;23676:50;23769:6;23753:14;23749:27;23742:5;23738:39;23735:59;;;23790:1;23787;23780:12;23805:134;23873:20;;23902:31;23873:20;23902:31;:::i;23944:128::-;24009:20;;24038:28;24009:20;24038:28;:::i;24077:1731::-;24332:2;24321:9;24314:21;24295:4;24358:62;24416:2;24405:9;24401:18;24393:6;24385;24358:62;:::i;:::-;24468:9;24460:6;24456:22;24451:2;24440:9;24436:18;24429:50;24522:47;24562:6;24554;24522:47;:::i;:::-;24593:6;24585;24578:22;24623:75;24690:6;24682;24678:19;24664:12;24650;24623:75;:::i;:::-;24609:89;;;24745:2;24737:6;24733:15;24720:29;24758:31;24783:5;24758:31;:::i;:::-;-1:-1:-1;;;;;7292:31:3;24844:2;24832:15;;7280:44;24879:37;24910:4;24898:17;;24879:37;:::i;:::-;-1:-1:-1;;;;;7292:31:3;24980:4;24968:17;;7280:44;25033:56;25085:2;25073:15;;25077:6;25033:56;:::i;:::-;25134:6;25126;25122:19;25117:2;25109:6;25105:15;25098:44;25165:66;25224:6;25208:14;25192;25165:66;:::i;:::-;25301:4;25289:17;;;25276:31;25323:17;;;25316:34;25151:80;-1:-1:-1;25381:37:3;;-1:-1:-1;;25412:4:3;25400:17;;25381:37;:::i;:::-;-1:-1:-1;;;;;7401:44:3;25474:4;25462:17;;7389:57;25511:37;25542:4;25530:17;;25511:37;:::i;:::-;-1:-1:-1;;;;;7401:44:3;25604:4;25592:17;;7389:57;25641:34;25669:4;25657:17;;25641:34;:::i;:::-;7527:13;;7520:21;25728:4;25716:17;;7508:34;-1:-1:-1;25788:4:3;25773:20;;;;25766:36;;;;-1:-1:-1;25751:6:3;24077:1731;-1:-1:-1;;;;24077:1731:3:o;25813:318::-;26000:6;25989:9;25982:25;26043:2;26038;26027:9;26023:18;26016:30;25963:4;26063:62;26121:2;26110:9;26106:18;26098:6;26090;26063:62;:::i;:::-;26055:70;25813:318;-1:-1:-1;;;;;25813:318:3:o;26136:136::-;26175:3;26203:5;26193:39;;26212:18;;:::i;:::-;-1:-1:-1;;;26248:18:3;;26136:136::o;27202:168::-;27275:9;;;27306;;27323:15;;;27317:22;;27303:37;27293:71;;27344:18;;:::i;27375:217::-;27415:1;27441;27431:132;;27485:10;27480:3;27476:20;27473:1;27466:31;27520:4;27517:1;27510:15;27548:4;27545:1;27538:15;27431:132;-1:-1:-1;27577:9:3;;27375:217::o;28163:127::-;28224:10;28219:3;28215:20;28212:1;28205:31;28255:4;28252:1;28245:15;28279:4;28276:1;28269:15",
  "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 contains all of the MVO staking storage and logic\r\n/// @dev address(this) must be passed to updateMinterStatus() in the $ENSHROUD token contract by a minter\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// used for Enshroud Token\r\ninterface IERC20Permit_MVOStaking {\r\n    function mint(address _to, uint256 _value) external;\r\n\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\r\ninterface IEnshroudProtocol_MVOStaking {\r\n    // getter for public 'adminStatus[]' mapping\r\n    function adminStatus(address addr) external view returns (bool);\r\n}\r\n\r\ncontract MVOStaking is ReentrancyGuard {\r\n    using SafeTransferLib for address;\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                        TYPES AND STATE VARIABLES\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    /// @notice 'listenURI' represents the web2 URI at which dApp users can contact this MVO (note this is typically an http proxy endpoint)\r\n    /// @notice 'stakingAddress' is the EOA from which the MVO's owner stakes tokens in this contract, and receives mints when claiming rewards\r\n\t/// @notice 'signingAddress' corresponds to the privkey with which this MVO signs OperationsBlocks, allowing sig verification by peers and dApps\r\n\t/// @notice 'encrPubkey' is the public key used to faciliate ECIES encryption between dApp users and the MVO\r\n\t/// @notice 'stakingQuantum' is the amount staked by stakingAddress in this contract\r\n\t/// @notice 'memberPoolId' is updated when the MVO joins or creates a pool\r\n\t/// @notice 'rating' is initially unused in this contract, but may be used for purposes such as slashing in conjunction with 'reducePoints()', offchain reputation trackers, etc.\r\n\t/// @notice 'active' is an administrative enable/shutoff switch\r\n\t/// @notice except for stakingQuantum and memberPoolId, all of these values can be configured only by admins\r\n    struct MVO {\r\n        string listenURI;\r\n        address payable stakingAddress;\r\n        address signingAddress;\r\n        string encrPubkey;\r\n        uint256 stakingQuantum;\r\n        uint120 memberPoolId;\r\n        uint120 rating;\r\n        bool active;\r\n    }\r\n\r\n\t/// @notice the 'poolAddress' will match the stakingAddress of the creator\r\n    struct MVOPool {\r\n        address payable poolAddress;\r\n        uint96 dues;\r\n    }\r\n\r\n\t/// types to distinguish Requests\r\n\tenum ApprovalTypes { MinStake, Protocol, PointsBot }\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    }\r\n\r\n\t/// @notice mirrors Timelock{} in TimelockManager and DAOPool contracts\r\n    struct Timelock {\r\n        uint256 totalAmount;\r\n        uint256 remainingAmount;\r\n        uint128 releaseStart;\r\n        uint128 releaseEnd;\r\n    }\r\n\r\n    /// @notice constant variable for ETH mainnet: approximated via 7150 blocks/day, 365 days per year\r\n    /// @dev this must be altered for deployments on other chains\r\n    uint256 internal constant BLOCKS_PER_YEAR = 2609750;\r\n    /// @dev 18 decimal token calculations\r\n    uint256 internal constant DECIMALS = 1e18;\r\n\r\n    /// @notice $ENSHROUD token contract address, immutable\r\n    address public immutable enshroudToken;\r\n    /// @notice block starting point for epoch calculations\r\n    uint256 public immutable genesisBlock;\r\n    /// @notice immutable interface for 'enshroudToken'\r\n    IERC20Permit_MVOStaking internal immutable iEnshroudToken;\r\n    /// @notice TimelockManager contract address\r\n    address public immutable timelockManager;\r\n\r\n    /// @notice Enshroud protocol addresses (to support V1, V2, etc.)\r\n    address[] public enshroudProtocols;\r\n\t/// @notice counter for enshroudProtocols array, set to index of latest deployed Enshroud protocol\r\n\tuint256 public protoIndex;\r\n\r\n    /// @notice hash of off-chain codebase (i.e. MVO/Auditor node) location, or codebase in its entirety, for user verification. Provided by admin.\r\n    bytes32 public codeHash;\r\n\r\n    /// @notice minimum amount of stake required for an active MVO\r\n    uint256 public minStake;\r\n    /// @notice counter for 'mvoIds' array index via 'mvoIdsIndex' mapping\r\n    uint256 public mvoIndex;\r\n    /// @notice total amount of staked tokens, used to calculate relative staking amount for a given MVO in selection mechanism\r\n    uint256 public totalStake;\r\n    /// @notice total amount of awarded points outstanding, used to calculate relative pointsBalance for a given MVO when claiming reward mint\r\n    uint256 public totalPoints;\r\n\t/// @notice address used by bot that imports points awarded on other chains\r\n\taddress internal pointsBot;\r\n    /// @notice for the MVO selection algorithm\r\n    string[] public mvoIds;\r\n\t/// @notice used for tracking state of update*() invocations\r\n    mapping(address => Requests) internal updateRequested;\r\n    /// @notice MVO staking address mapped to current points balance\r\n    mapping(address => uint256) public pointsBalance;\r\n    /// @notice maps an mvoId to its index number ('mvoIndex') in the 'mvoIds' array\r\n    mapping(string => uint256) public mvoIdsIndex;\r\n    /// @notice maps an MVO's mvoId to corresponding MVO struct\r\n    mapping(string => MVO) public idToMVO;\r\n    /// @notice maps year to the amount of MVO incentive tokens remaining for reward mint in such year\r\n    mapping(uint256 => uint256) public yearToTokensRemaining;\r\n    /// @notice maps an MVOPoolId to its corresponding MVOPool struct\r\n    mapping(uint256 => MVOPool) public idToMVOPool;\r\n    /// @notice maps a timelock beneficiary address to their Timelock struct\r\n    mapping(address => Timelock) public timelocks;\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            EVENTS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    event CodeHashChanged(bytes32 newCodeHash);\r\n\r\n    event MinimumStakeUpdated(uint256 newMinStake);\r\n\r\n    event MVOPoolCreated(uint256 poolId, uint256 dues, string creatorMvoID);\r\n\r\n    event MVOPoolDeleted(uint256 poolId, string creatorMvoID);\r\n\r\n    event MVOStakeUpdated(string mvoID, uint256 stakingQuantum);\r\n\r\n    event MVOStaking_ProtocolUpdated(address newProtocol);\r\n\r\n    event MVOStaking_Staked(\r\n        address indexed sender,\r\n        uint256 amount,\r\n        uint256 blockNumber\r\n    );\r\n\r\n    event MVOStaking_Unstaked(\r\n        address indexed sender,\r\n        uint256 amount,\r\n        uint256 blockNumber\r\n    );\r\n\r\n    event MVOStatusChanged(string mvoID, MVO updatedMVO, uint256 chainId);\r\n\r\n    event PointsAwarded(address indexed mvoAddress, uint256 points, uint256 chainId);\r\n\r\n\tevent PointsBotUpdated(address botAddress);\r\n\r\n    event PointsReduced(address indexed mvoAddress, uint256 points);\r\n\r\n    event PoolMembershipUpdated(\r\n        uint256 indexed newPoolId,\r\n        uint256 oldPoolId,\r\n        string memberMvoID\r\n    );\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            MODIFIERS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n\t/// @notice guarantees caller is an admin in the last-deployed EnshroudProtocol\r\n    modifier onlyAdmin() {\r\n\t\tif (\r\n\t\t\t!IEnshroudProtocol_MVOStaking(enshroudProtocols[protoIndex-1])\r\n\t\t\t\t.adminStatus(msg.sender)\r\n\t\t) revert NotAdmin();\r\n        _;\r\n    }\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            ERRORS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    error AmountLargerThanBalance();\r\n    error AmountLargerThanStake();\r\n    error AmountLargerThanWithdrawable();\r\n    error DuesTooLarge();\r\n    error IDAlreadyInUse();\r\n    error IDAndMsgSenderMismatch();\r\n    error IncorrectSigLength();\r\n    error InvalidChainId();\r\n    error InvalidSignature();\r\n    error LengthMismatch();\r\n    error MintPeriodExpired();\r\n    error NotActiveMVO();\r\n    error NotAdmin();\r\n    error OnlyPointsRobot();\r\n    error OnlyProtocolContract();\r\n    error OnlyTimelockManager();\r\n    error PoolDoesNotExist();\r\n    error UnclaimedPoints();\r\n\r\n    /*///////////////////////////////////////////////////////////////\r\n                            FUNCTIONS\r\n    //////////////////////////////////////////////////////////////*/\r\n\r\n    /// @param _enshroudProtocol: Enshroud Protocol contract address\r\n    /// @param _enshroudToken: $ENSHROUD token contract address. Immutable.\r\n    /// @param _timelockManager: contract address for $ENSHROUD token timelock manager. Immutable.\r\n    /// @param _minStake: initial minimum staked amount of enshroudToken required for a signing MVO\r\n    constructor(\r\n        address _enshroudProtocol,\r\n        address _enshroudToken,\r\n        address _timelockManager,\r\n        uint256 _minStake\r\n    ) payable {\r\n        enshroudProtocols.push(_enshroudProtocol);\r\n\t\tprotoIndex = 1;\r\n        enshroudToken = _enshroudToken;\r\n        timelockManager = _timelockManager;\r\n        iEnshroudToken = IERC20Permit_MVOStaking(_enshroudToken);\r\n        minStake = _minStake;\r\n\r\n        // stored to calculate mint amounts according to incentive schedule\r\n        genesisBlock = block.number;\r\n\r\n        // 5 million token reward incentive for year 1, 4 million for year 2, 3 million for year 3, 2 million for year 4, 1 million for year 5\r\n        yearToTokensRemaining[1] = 5000000 * DECIMALS;\r\n        yearToTokensRemaining[2] = 4000000 * DECIMALS;\r\n        yearToTokensRemaining[3] = 3000000 * DECIMALS;\r\n        yearToTokensRemaining[4] = 2000000 * DECIMALS;\r\n        yearToTokensRemaining[5] = 1000000 * DECIMALS;\r\n    }\r\n\r\n    /// @notice award a lead MVO (3 points) and committee MVOs (1 point each) for each processed transaction, only callable by the protocol contract\r\n    /// @dev uses idToMVO mapping to determine the committee MVO staking addresses; sigs not currently checked since only enshroudProtocol can call this method, and every invocation is preceeded by a call to checkMVOSig(); Reentrant-protected by each function in EnshroudProtocol which is able to call this function\r\n    /// @param _mvoIDs: IDs of MVOs for the transaction\r\n    function awardPoints(\r\n        string[] calldata _mvoIDs\r\n    ) external {\r\n\t\t/// @dev guarantee caller is in the array of deployed enshroudProtocols\r\n\t\tbool notProtocol = true;\r\n\t\t// @dev loop runs backwards to advantage latest protocol re gas usage\r\n\t\tfor (uint256 pIdx = enshroudProtocols.length; pIdx > 0; pIdx--) {\r\n\t\t\tif (msg.sender == enshroudProtocols[pIdx-1]) {\r\n\t\t\t\tnotProtocol = false;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n        if (notProtocol) revert OnlyProtocolContract();\r\n\r\n        MVO storage _leadMVO = idToMVO[_mvoIDs[0]];\r\n        unchecked {\r\n            pointsBalance[_leadMVO.stakingAddress] += 3;\r\n            totalPoints += 3;\r\n        }\r\n\r\n        /// @dev MVO will be able to claim tokens with their 'pointsBalance' via their 'stakingAddress', but note operations block sigs are made with 'signingAddress'.\r\n        /// Start at [1] as [0] (lead MVO) was already handled above. Array length limited in protocol contract.\r\n        for (uint256 i = 1; i < _mvoIDs.length; ) {\r\n            address _stakeAddr = idToMVO[_mvoIDs[i]].stakingAddress;\r\n            unchecked {\r\n                ++pointsBalance[_stakeAddr];\r\n                ++totalPoints;\r\n                ++i;\r\n            }\r\n            emit PointsAwarded(_stakeAddr, 1, block.chainid);\r\n        }\r\n        emit PointsAwarded(_leadMVO.stakingAddress, 3, block.chainid);\r\n    }\r\n\r\n\t/// @notice this method is only relevant on Eth mainnet, callable by bot\r\n\t/// @dev used to migrate points earned by MVOs on other chains to mainnet where staking and point claims actually take place\r\n\t/// @param _chainId: the chain the bot is importing the points from\r\n\t/// @param _mvoIDs: IDs of MVOs for which points are being imported\r\n\t/// @param _points: number of points for each listed MVO\r\n\tfunction importPoints(\r\n\t\tuint256 _chainId,\r\n\t\tstring[] calldata _mvoIDs,\r\n\t\tuint256[] calldata _points\r\n\t) external nonReentrant {\r\n\t\t/// @dev guarantee caller is the duly authorized point import bot\r\n\t\tif (msg.sender != pointsBot) revert OnlyPointsRobot();\r\n\t\tif (_chainId == block.chainid || _chainId == 0) revert InvalidChainId();\r\n\t\tif (_mvoIDs.length == 0 || _mvoIDs.length != _points.length) {\r\n\t\t\trevert LengthMismatch();\r\n\t\t}\r\n\t\t// add points to all provided MVOs if they are valid\r\n\t\tfor (uint256 i = 0; i < _mvoIDs.length; ) {\r\n        \tMVO storage _mvo = idToMVO[_mvoIDs[i]];\r\n\t\t\taddress _stakeAddr = _mvo.stakingAddress;\r\n\t\t\t/// @dev we do not check _mvo.active to allow import of points accrued elsewhere prior to deactivation\r\n\t\t\tif (_stakeAddr == address(0)) revert NotActiveMVO();\r\n\t\t\tunchecked {\r\n\t\t\t\t// points are small values and are cleared periodically, therefore won't overflow on human timelines\r\n\t\t\t\tpointsBalance[_stakeAddr] += _points[i];\r\n\t\t\t\ttotalPoints += _points[i];\r\n\t\t\t\temit PointsAwarded(_stakeAddr, _points[i], _chainId);\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n    /// @notice an admin can slash points from an MVO for impropriety; also may be used for points redemption mechanisms for MVO reward schemes beyond the 5 year hardcoded rewards\r\n    /* @dev this method does not affect the MVO's struct; for alterations to an MVO's struct information, 'updateMvoStatus()' should be used;\r\n     * single admin used here (1) for ease and reversibility of any malicious or mistaken update, and (2) so a single contract address may affect points balances in future,\r\n     * such as a custom points slashing or redemption contract implementation */\r\n    /// @param _mvoID: ID of MVO whose points are being reduced\r\n    /// @param _points: amount of points being subtracted from the relevant MVO's 'pointsBalance'\r\n    function reducePoints(\r\n        string calldata _mvoID,\r\n        uint256 _points\r\n    ) external onlyAdmin {\r\n        address _stakingAddr = idToMVO[_mvoID].stakingAddress;\r\n        if (pointsBalance[_stakingAddr] < _points)\r\n            revert AmountLargerThanBalance();\r\n        // will not revert due to preceding 'pointsBalance[]' condition check and the fact that no amount subtracted from 'totalPoints' can be larger than a single address's pointsBalance (see 'claim()')\r\n        unchecked {\r\n            pointsBalance[_stakingAddr] -= _points;\r\n            totalPoints -= _points;\r\n        }\r\n\r\n        emit PointsReduced(_stakingAddr, _points);\r\n    }\r\n\r\n    /// @notice for an MVO to claim their mint reward. Amount of reward is based on the ratio of msg.sender's 'pointsBalance[]' compared to 'totalPoints' at the time of claim, minus any pool dues\r\n    /// @dev entire 'pointsBalance' of msg.sender is redeemed - claiming a partial balance is not supported for efficiency as it is generally more advantageous to claim as soon as possible\r\n    /// @dev claimable mint amount updates linearly by block.number within each applicable year\r\n    /// @param _mvoID: MVO ID of msg.sender\r\n    function claim(string calldata _mvoID) external nonReentrant {\r\n        if (msg.sender != idToMVO[_mvoID].stakingAddress)\r\n            revert IDAndMsgSenderMismatch();\r\n        // '_poolId' == 0 if msg.sender is not in a pool\r\n        uint256 _poolId = idToMVO[_mvoID].memberPoolId;\r\n        uint256 _pointsAccrued = pointsBalance[msg.sender];\r\n        uint256 _index;\r\n        uint256 _blockDiff = block.number - genesisBlock;\r\n\r\n        // when five year incentive period is over, no tokens to claim\r\n        if (_blockDiff > BLOCKS_PER_YEAR * 5) revert MintPeriodExpired();\r\n        else if (_blockDiff <= BLOCKS_PER_YEAR) _index = 1;\r\n        else if (\r\n            _blockDiff > BLOCKS_PER_YEAR && _blockDiff <= BLOCKS_PER_YEAR * 2\r\n        ) _index = 2;\r\n        else if (\r\n            _blockDiff > BLOCKS_PER_YEAR * 2 &&\r\n            _blockDiff <= BLOCKS_PER_YEAR * 3\r\n        ) _index = 3;\r\n        else if (\r\n            _blockDiff > BLOCKS_PER_YEAR * 3 &&\r\n            _blockDiff <= BLOCKS_PER_YEAR * 4\r\n        ) _index = 4;\r\n        else if (\r\n            _blockDiff > BLOCKS_PER_YEAR * 4 &&\r\n            _blockDiff <= BLOCKS_PER_YEAR * 5\r\n        ) _index = 5;\r\n\r\n        // available mint amount = (tokens remaining to mint in applicable incentive year) * (blocks since start of year) / (blocks per year); equation below accounts for the year '_index'\r\n        // available mint pot therefore updates every block but incentivises early claiming (as per-block amount is constant, assuming number of MVOs grows and points are more broadly distributed as the year progresses)\r\n        // denominator will never be zero, as BLOCKS_PER_YEAR is constant and '_index' will revert above if == 0\r\n        uint256 _availableToMint = (yearToTokensRemaining[_index] *\r\n            _blockDiff) / (BLOCKS_PER_YEAR * _index);\r\n\r\n        // tokens earned by msg.sender is calculated by (at the time of 'claim()' call) the ratio of points accrued:total points times the total available mint\r\n        uint256 _earnedTokens = (_pointsAccrued * _availableToMint) /\r\n            totalPoints;\r\n\r\n        // subtract redeemed points from 'totalPoints' and reset 'pointsBalance[]' mapping for this msg.sender as all '_pointsAccrued' are redeemed\r\n        totalPoints -= _pointsAccrued;\r\n        delete pointsBalance[msg.sender];\r\n\r\n        // subtract minted tokens from amount reserved as MVO incentive for applicable year; will not underflow as the '_earnedTokens' calculation must result in <= 'yearToTokensRemaining[_index]'\r\n        yearToTokensRemaining[_index] -= _earnedTokens;\r\n\r\n        // '_dues' == 0 if msg.sender is not in a pool, as _poolId == 0 and idToMVOPool[0].dues is intentionally not initialized to keep default value of 0\r\n        uint256 _dues = (_earnedTokens * uint256(idToMVOPool[_poolId].dues)) /\r\n            DECIMALS;\r\n\r\n        // mint rewards\r\n        iEnshroudToken.mint(msg.sender, _earnedTokens - _dues);\r\n        if (_dues != 0)\r\n            iEnshroudToken.mint(idToMVOPool[_poolId].poolAddress, _dues);\r\n\r\n        emit PointsReduced(msg.sender, _pointsAccrued);\r\n    }\r\n\r\n    /// @notice for an MVO to stake their tokens; must first approve address(this) for '_amount'\r\n    /// @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\r\n    /// @param _mvoID: MVO ID of msg.sender\r\n    /// @param _amount: amount to be staked\r\n    function stake(\r\n        string calldata _mvoID,\r\n        uint256 _amount\r\n    ) external nonReentrant {\r\n        if (msg.sender != idToMVO[_mvoID].stakingAddress)\r\n            revert IDAndMsgSenderMismatch();\r\n\r\n        totalStake += _amount;\r\n        idToMVO[_mvoID].stakingQuantum += _amount;\r\n\r\n        enshroudToken.safeTransferFrom(msg.sender, address(this), _amount);\r\n\r\n        emit MVOStaking_Staked(msg.sender, _amount, block.number);\r\n        emit MVOStakeUpdated(_mvoID, idToMVO[_mvoID].stakingQuantum);\r\n    }\r\n\r\n    /// @notice for an MVO to stake their tokens in this address using permit()\r\n    /// @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\r\n    /// @param _mvoID: MVO ID of msg.sender\r\n    /// @param _amount: amount to be staked\r\n\t/// @param _deadline: block limit by which permit must be used\r\n    /// @param v - ECDSA sig param\r\n    /// @param r - ECDSA sig param\r\n    /// @param s - ECDSA sig param\r\n    function stakeWithPermit(\r\n        string calldata _mvoID,\r\n        uint256 _amount,\r\n\t\tuint256 _deadline,\r\n        uint8 v,\r\n        bytes32 r,\r\n        bytes32 s\r\n    ) external nonReentrant {\r\n        if (msg.sender != idToMVO[_mvoID].stakingAddress)\r\n            revert IDAndMsgSenderMismatch();\r\n\r\n        totalStake += _amount;\r\n        idToMVO[_mvoID].stakingQuantum += _amount;\r\n\r\n        iEnshroudToken.permit(\r\n            msg.sender,\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        enshroudToken.safeTransferFrom(msg.sender, address(this), _amount);\r\n\r\n        emit MVOStaking_Staked(msg.sender, _amount, block.number);\r\n        emit MVOStakeUpdated(_mvoID, idToMVO[_mvoID].stakingQuantum);\r\n    }\r\n\r\n    /// @notice for the 'timelockManager' (by user calling 'withdrawTimelockToMVOStaking()' in TimelockManager contract) to stake $ENSHROUD tokens in this address on behalf of the timelock beneficiary ('_staker'), who is an MVO operator.\r\n    /// @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for '_staker'\r\n\t/// @dev one timelock per '_staker' at a time, though a further amount may be added to 'timelocks[_staker]' if the MVO owner consolidates multiple timelocks.\r\n    /// nonReentrant modifier unnecessary here as it is already present in 'withdrawTimelockToMVOStaking()' in TimelockManager contract, which is the only permitted caller of this function\r\n    /// @param _mvoID: MVO ID of '_staker'\r\n    /// @param _amount: amount to be staked\r\n    /// @param _staker: address of timelock beneficiary corresponding to '_mvoID' that will call the initiating function in 'timelockManager'\r\n    /// @param _releaseStart: starting block number of timelock\r\n    /// @param _releaseEnd: ending block number of timelock\r\n    function stakeTimelock(\r\n        string calldata _mvoID,\r\n        uint256 _amount,\r\n        address _staker,\r\n        uint128 _releaseStart,\r\n        uint128 _releaseEnd\r\n    ) external {\r\n        if (msg.sender != timelockManager) revert OnlyTimelockManager();\r\n        if (_staker != idToMVO[_mvoID].stakingAddress)\r\n            revert IDAndMsgSenderMismatch();\r\n\r\n        totalStake += _amount;\r\n        idToMVO[_mvoID].stakingQuantum += _amount;\r\n\r\n\t\t// check for existing Timelock for MVO's stakingAddress\r\n\t\tif (timelocks[_staker].remainingAmount != 0) {\r\n\t\t\t// increment existing Timelock, leaving start/end blocks the same\r\n\t\t\ttimelocks[_staker].totalAmount += _amount;\r\n\t\t\ttimelocks[_staker].remainingAmount += _amount;\r\n        } else {\r\n\t\t\t// create new Timelock\r\n\t\t\ttimelocks[_staker] = Timelock({\r\n\t\t\t\ttotalAmount: _amount,\r\n\t\t\t\tremainingAmount: _amount,\r\n\t\t\t\treleaseStart: _releaseStart,\r\n\t\t\t\treleaseEnd: _releaseEnd\r\n\t\t\t});\r\n\t\t}\r\n\r\n        enshroudToken.safeTransferFrom(msg.sender, address(this), _amount);\r\n\r\n        emit MVOStaking_Staked(_staker, _amount, block.number);\r\n        emit MVOStakeUpdated(_mvoID, idToMVO[_mvoID].stakingQuantum);\r\n    }\r\n\r\n    /// @notice for an MVO to withdraw its staked $ENSHROUD tokens\r\n    /// @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\r\n    /// @dev stake can only be withdrawn if msg.sender's '_mvoID' is correct; if msg.sender's MVO struct is maliciously altered by an admin, will need to be corrected\r\n    /// @param _mvoID: MVO ID of msg.sender\r\n    /// @param _amount: amount to be withdrawn\r\n    function withdraw(\r\n        string calldata _mvoID,\r\n        uint256 _amount\r\n    ) external nonReentrant {\r\n        if (msg.sender != idToMVO[_mvoID].stakingAddress)\r\n            revert IDAndMsgSenderMismatch();\r\n        if (idToMVO[_mvoID].stakingQuantum < _amount)\r\n            revert AmountLargerThanStake();\r\n\r\n        uint256 _remaining = timelocks[msg.sender].remainingAmount;\r\n\t\tif (_remaining != 0) {\r\n        \t// _unlockedAndWithdrawable = unlocked - withdrawn, which cannot be negative; will return 0 if no timelock\r\n\t\t\tuint256 _unlockedAndWithdrawable = _getUnlocked(msg.sender) -\r\n\t\t\t\t(timelocks[msg.sender].totalAmount - _remaining);\r\n\t\t\t// in addition to withdrawable from timelock, user can withdraw any\r\n\t\t\t// tokens which were added via stake() or stakeWithPermit()\r\n\t\t\tuint256 _neverLocked = idToMVO[_mvoID].stakingQuantum - _remaining;\r\n\r\n\t\t\t// if msg.sender has active timelock, revert if _amount is greater than the unlocked & not yet withdrawn amount + any separately staked unlocked\r\n\t\t\tif (_amount > _unlockedAndWithdrawable + _neverLocked)\r\n\t\t\t\trevert AmountLargerThanWithdrawable();\r\n\r\n\t\t\t// subtract _amount first from the struct's remainingAmount\r\n\t\t\tif (_unlockedAndWithdrawable >= _amount)\r\n\t\t\t\ttimelocks[msg.sender].remainingAmount -= _amount;\r\n\t\t\telse\r\n\t\t\t\ttimelocks[msg.sender].remainingAmount -= _unlockedAndWithdrawable;\r\n\t\t\t\t// (the rest will come from separately-staked unlocked tokens)\r\n\t\t}\r\n\r\n        unchecked {\r\n            // cannot underflow due to earlier condition check\r\n            idToMVO[_mvoID].stakingQuantum -= _amount;\r\n            // cannot underflow as 'idToMVO[_mvoID].stakingQuantum' cannot be greater than 'totalStake', and this is the only decrement of 'totalStake'\r\n            totalStake -= _amount;\r\n        }\r\n\r\n        enshroudToken.safeTransfer(msg.sender, _amount);\r\n\r\n        emit MVOStaking_Unstaked(msg.sender, _amount, block.number);\r\n        emit MVOStakeUpdated(_mvoID, idToMVO[_mvoID].stakingQuantum);\r\n    }\r\n\r\n    /// @notice for an MVO to create an MVO pool -- msg.sender will be 'poolAddress'. Cannot be altered after creation; only option is to delete pool and start another with a new 'miningPoolId'\r\n    /// @param _miningPoolId: unique ID of prospective MVO pool. Cannot be 0 -- this is the default value and indicates an MVO is not in a pool in its MVO struct\r\n    /// @param _dues: amount of dues required to be a pool member, in 18 decimals (which also corresponds to wei). Must be < 5e17 (< 50%). 5e16 corresponds to 5%.\r\n    /// @param _mvoID: MVO ID of msg.sender\r\n\t/// @dev to prevent dues dodging, user must claim any points first\r\n    function createMVOPool(\r\n        uint256 _miningPoolId,\r\n        uint256 _dues,\r\n        string calldata _mvoID\r\n    ) external {\r\n        if (\r\n            _miningPoolId == 0 ||\r\n            idToMVOPool[_miningPoolId].poolAddress != address(0)\r\n        ) revert IDAlreadyInUse();\r\n        // cannot have 50% or greater dues, this also prevents '_dues' from being larger than the max uint96 value\r\n        if (_dues >= 5e17) revert DuesTooLarge();\r\n        if (msg.sender != idToMVO[_mvoID].stakingAddress)\r\n            revert IDAndMsgSenderMismatch();\r\n\r\n        // ensure msg.sender is an active MVO with at least 'minStake' staked\r\n        checkMVO(_mvoID);\r\n\t\t// ensure owner doesn't have any unclaimed points\r\n        if (pointsBalance[msg.sender] > 0) revert UnclaimedPoints();\r\n\r\n        // write new pool struct to stored mapping\r\n        idToMVOPool[_miningPoolId] = MVOPool({\r\n            poolAddress: payable(msg.sender),\r\n            dues: uint96(_dues)\r\n        });\r\n\r\n        // update pool ID struct member for the pool creator\r\n        idToMVO[_mvoID].memberPoolId = uint120(_miningPoolId);\r\n\r\n        emit MVOPoolCreated(_miningPoolId, _dues, _mvoID);\r\n    }\r\n\r\n    /// @notice for an MVO pool creator to delete their pool\r\n    /// @param _miningPoolId: msg.sender's MVO pool ID\r\n    /// @param _mvoID: MVO ID of msg.sender\r\n    function deleteMVOPool(\r\n        uint256 _miningPoolId,\r\n        string calldata _mvoID\r\n    ) external {\r\n        // ensure correct '_mvoID' is supplied and msg.sender is the poolAddress for '_miningPoolId'\r\n        if (\r\n            msg.sender != idToMVO[_mvoID].stakingAddress ||\r\n            idToMVOPool[_miningPoolId].poolAddress != payable(msg.sender)\r\n        ) revert IDAndMsgSenderMismatch();\r\n        delete idToMVOPool[_miningPoolId];\r\n        emit MVOPoolDeleted(_miningPoolId, _mvoID);\r\n    }\r\n\r\n    /// @notice for an MVO to join an existing MVO mining pool, change pool membership, or leave a pool\r\n    /// @param _newMiningPoolId: pool ID which msg.sender desires to join; pass 0 to leave a pool without a replacement\r\n\t/// @dev to prevent dues dodging, user must claim any points first\r\n    /// @param _mvoID: MVO ID of msg.sender\r\n    function updateMVOPoolMembership(\r\n        uint256 _newMiningPoolId,\r\n        string calldata _mvoID\r\n    ) external {\r\n        if (msg.sender != idToMVO[_mvoID].stakingAddress)\r\n            revert IDAndMsgSenderMismatch();\r\n\t\t// ensure owner doesn't have any unclaimed points\r\n        if (pointsBalance[msg.sender] > 0) revert UnclaimedPoints();\r\n\r\n\t\t// ensure pool exists\r\n        if (\r\n            _newMiningPoolId != 0 &&\r\n            idToMVOPool[_newMiningPoolId].poolAddress == address(0)\r\n        ) revert PoolDoesNotExist();\r\n\r\n        // ensure msg.sender is an active MVO with at least 'minStake' staked\r\n        checkMVO(_mvoID);\r\n\r\n        // store current poolId for event emission\r\n        uint256 _currentPoolId = idToMVO[_mvoID].memberPoolId;\r\n\r\n        // update msg.sender's MVO struct (via mapping from their MVO Id) with new mining pool id\r\n        idToMVO[_mvoID].memberPoolId = uint120(_newMiningPoolId);\r\n\r\n        emit PoolMembershipUpdated(_newMiningPoolId, _currentPoolId, _mvoID);\r\n    }\r\n\r\n    /// @notice update 'codeHash', designating a new hash of the off-chain codebase storage location reference or entire codebase, for user verification\r\n    /// @dev admin should apprise users of how to verify the 'codeHash' -- the 'codeHash' is publicly accessible via getter as a public storage variable\r\n    /// @param _newCodeHash: new bytes32 hash of the off-chain codebase or location\r\n    function updateCodeHash(bytes32 _newCodeHash) external onlyAdmin {\r\n        codeHash = _newCodeHash;\r\n        emit CodeHashChanged(_newCodeHash);\r\n    }\r\n\r\n    /// @notice for a single admin to designate, update, or revoke an MVO's config struct using its ID\r\n    /// @dev single admin used here for ease and reversibility of any malicious or mistaken update\r\n    /// @param _mvoID: string ID for a given MVO\r\n    /// @param _mvo: new or replacement MVO struct for the given ID\r\n    function updateMvoStatus(\r\n        string calldata _mvoID,\r\n        MVO calldata _mvo\r\n    ) external onlyAdmin {\r\n        // if the pre-updated MVO struct corresponding to '_mvoID' has the default zero address as its 'stakingAddress', assume '_mvoID' is not yet stored in 'mvoIds' array and add it\r\n        if (idToMVO[_mvoID].stakingAddress == address(0)) {\r\n\t\t\tmvoIds.push(_mvoID);\r\n\t\t\t// update mapping to store the index number in the 'mvoIds' array corresponding to this '_mvoID', then increment the 'mvoIndex' counter\r\n\t\t\tmvoIdsIndex[_mvoID] = mvoIndex;\r\n\t\t\tunchecked {\r\n\t\t\t\t++mvoIndex; // will not overflow on human timelines\r\n\t\t\t}\r\n\t\t}\r\n        idToMVO[_mvoID] = _mvo;\r\n        emit MVOStatusChanged(_mvoID, _mvo, block.chainid);\r\n    }\r\n\r\n    /// @notice update 'minStake', designating a new minimum stake amount of $ENSHROUD tokens for MVOs, after three admins have called\r\n    /// @param _newMinStake: new minimum amount of $ENSHROUD tokens required for a MVO to stake\r\n    function updateMinStake(uint256 _newMinStake) external onlyAdmin {\r\n        bytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n        /// @dev we use 'address(uint160(_newMinStake))' as the key for the 'updateRequested' mapping to force every admin to set the same value\r\n\t\t/// @notice for the possible values of _newMinStake, the discarded highest 12 bytes will be 0\r\n\t\taddress _minStakeKey = address(uint160(_newMinStake));\r\n        if (_isRequestApproved(_minStakeKey, _caller, ApprovalTypes.MinStake)) {\r\n            // only update 'minStake' address if three admins have requested, to thwart a single malicious admin\r\n            minStake = _newMinStake;\r\n\r\n            // reset after variable update\r\n            delete updateRequested[_minStakeKey];\r\n            emit MinimumStakeUpdated(_newMinStake);\r\n        }\r\n    }\r\n\r\n    /// @notice update 'enshroudProtocol' a new protocol address, such as for a v2 upgrade, after three admins have called\r\n    /// @param _newProtocol: new Enshroud Protocol contract address, changing 'enshroudProtocol'; must correctly implement public 'adminStatus[]' mapping\r\n    function updateProtocol(address _newProtocol) external onlyAdmin {\r\n        bytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n        if (_isRequestApproved(_newProtocol, _caller, ApprovalTypes.Protocol)) {\r\n            // only add 'enshroudProtocols' address if three admins have requested, to thwart a single malicious admin\r\n        \tenshroudProtocols.push(_newProtocol);\r\n\t\t\tunchecked {\r\n\t\t\t\t++protoIndex; // will not overflow on human timelines\r\n\t\t\t}\r\n\r\n            // reset after variable update\r\n            delete updateRequested[_newProtocol];\r\n            emit MVOStaking_ProtocolUpdated(_newProtocol);\r\n        }\r\n    }\r\n\r\n\t/// @notice set or update 'pointsBot' a new bot address authorized to import MVO points awarded on other chains (relevant only on mainnet contract deployment)\r\n\t/// @param _newBot: new bot authorized to import points from other chains\r\n\tfunction updatePointsBot(address _newBot) external onlyAdmin {\r\n\t\tbytes8 _caller = bytes8(uint64(uint160(msg.sender)));\r\n\t\tif (_isRequestApproved(_newBot, _caller, ApprovalTypes.PointsBot)) {\r\n\t\t\t// only set 'pointsBot' address if three admins have requested, to thwart a single malicious admin\r\n\t\t\tpointsBot = _newBot;\r\n\r\n\t\t\t// reset after variable update\r\n\t\t\tdelete updateRequested[_newBot];\r\n\t\t\temit PointsBotUpdated(_newBot);\r\n\t\t}\r\n\t}\r\n\r\n    /// @notice check an MVO's signature against its ID and verify signature - will revert if not\r\n    /// @param _mvoID: ID of MVO to access relevant struct containing MVO information\r\n    /// @param _mvoSig: signature of MVO to check against its ID using the idToMVO mapping\r\n    /// @param _obHash: keccak256 hash of the Operations Block\r\n    function checkMVOSig(\r\n        string calldata _mvoID,\r\n        bytes calldata _mvoSig,\r\n        bytes32 _obHash\r\n    ) external view {\r\n        (uint8 v, bytes32 r, bytes32 s) = _splitSignature(_mvoSig);\r\n        address _signAddr = ecrecover(_obHash, v, r, s);\r\n        if (idToMVO[_mvoID].signingAddress != _signAddr)\r\n            revert InvalidSignature();\r\n    }\r\n\r\n    /// @notice check an MVO's struct and ensure it has at least 'minStake' tokens and is active\r\n    /// @param _mvoID: ID of MVO to access relevant struct containing MVO information\r\n    function checkMVO(string calldata _mvoID) public view {\r\n        if (\r\n            !idToMVO[_mvoID].active || idToMVO[_mvoID].stakingQuantum < minStake\r\n        ) {\r\n            revert NotActiveMVO();\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: index to data being updated\r\n\t/// @param _caller: truncation of the admin address making the call\r\n\t/// @param _reqType: disambiguation for type of update call\r\n    function _isRequestApproved(\r\n        address _reqAddr,\r\n        bytes8 _caller,\r\n\t\tApprovalTypes _reqType\r\n    ) internal returns (bool) {\r\n        bytes8 _default;\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} 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        ) 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        ) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /// @notice split signature for ecrecover function, see https://docs.soliditylang.org/en/latest/solidity-by-example.html#recovering-the-message-signer-in-solidity\r\n\t/// @param _sig: the standard signature to be split\r\n    function _splitSignature(\r\n        bytes memory _sig\r\n    ) internal pure returns (uint8 v, bytes32 r, bytes32 s) {\r\n        if (_sig.length != 65) revert IncorrectSigLength();\r\n\r\n        assembly {\r\n            // first 32 bytes, after the length prefix.\r\n            r := mload(add(_sig, 32))\r\n            // second 32 bytes.\r\n            s := mload(add(_sig, 64))\r\n            // final byte (first byte of the next 32 bytes).\r\n            v := byte(0, mload(add(_sig, 96)))\r\n        }\r\n\r\n        return (v, r, s);\r\n    }\r\n\r\n    /// @notice returns 'unlocked', the amount of tokens that was unlocked for the recipient to date. Includes both withdrawn and non-withdrawn tokens.\r\n    /// @dev same function as in Timelock.sol\r\n    /// @param _recipient: address of the timelock recipient\r\n\t/// @return unlocked the quantity of tokens in a Timelock which are now unlockable\r\n    function _getUnlocked(\r\n        address _recipient\r\n    ) private view returns (uint256 unlocked) {\r\n        Timelock storage timelock = timelocks[_recipient];\r\n        uint256 _releaseStart = uint256(timelock.releaseStart);\r\n        uint256 _releaseEnd = uint256(timelock.releaseEnd);\r\n        if (block.number <= _releaseStart) {\r\n            unlocked = 0;\r\n        } else if (block.number >= _releaseEnd) {\r\n            unlocked = timelock.totalAmount;\r\n        } else {\r\n            // unlocked = (total amount * passed time since start) / total time of timelock\r\n            // denominator will not be 0 due to checks in TimelockManager contract\r\n            unlocked = (timelock.totalAmount * (block.number - _releaseStart)) /\r\n                (_releaseEnd - _releaseStart);\r\n        }\r\n    }\r\n}\r\n",
  "sourcePath": "/home/ensh/dapp/truffle/contracts/MVOStaking.sol",
  "ast": {
    "absolutePath": "project:/contracts/MVOStaking.sol",
    "exportedSymbols": {
      "IERC20Permit_MVOStaking": [
        30
      ],
      "IEnshroudProtocol_MVOStaking": [
        38
      ],
      "MVOStaking": [
        1967
      ],
      "ReentrancyGuard": [
        1995
      ],
      "SafeTransferLib": [
        2059
      ]
    },
    "id": 1968,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:24:0"
      },
      {
        "absolutePath": "project:/contracts/ReentrancyGuard.sol",
        "file": "./ReentrancyGuard.sol",
        "id": 3,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 1968,
        "sourceUnit": 1996,
        "src": "569:54:0",
        "symbolAliases": [
          {
            "foreign": {
              "id": 2,
              "name": "ReentrancyGuard",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1995,
              "src": "577:15:0",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/SafeTransferLib.sol",
        "file": "./SafeTransferLib.sol",
        "id": 5,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 1968,
        "sourceUnit": 2060,
        "src": "732:54:0",
        "symbolAliases": [
          {
            "foreign": {
              "id": 4,
              "name": "SafeTransferLib",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2059,
              "src": "740:15:0",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IERC20Permit_MVOStaking",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 30,
        "linearizedBaseContracts": [
          30
        ],
        "name": "IERC20Permit_MVOStaking",
        "nameLocation": "828:23:0",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "40c10f19",
            "id": 12,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nameLocation": "868:4:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7,
                  "mutability": "mutable",
                  "name": "_to",
                  "nameLocation": "881:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 12,
                  "src": "873:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "873:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9,
                  "mutability": "mutable",
                  "name": "_value",
                  "nameLocation": "894:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 12,
                  "src": "886:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "886:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "872:29:0"
            },
            "returnParameters": {
              "id": 11,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "910:0:0"
            },
            "scope": 30,
            "src": "859:52:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "d505accf",
            "id": 29,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "permit",
            "nameLocation": "928:6:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "953:5:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "945:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "945:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "977:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "969:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "969:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1003:5:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "995:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "995:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nameLocation": "1027:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1019:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22,
                  "mutability": "mutable",
                  "name": "v",
                  "nameLocation": "1052:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1046:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 21,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1046:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "1072:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1064:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1064:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26,
                  "mutability": "mutable",
                  "name": "s",
                  "nameLocation": "1092:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1084:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1084:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "934:166:0"
            },
            "returnParameters": {
              "id": 28,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1109:0:0"
            },
            "scope": 30,
            "src": "919:191:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 1968,
        "src": "818:295:0",
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IEnshroudProtocol_MVOStaking",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 38,
        "linearizedBaseContracts": [
          38
        ],
        "name": "IEnshroudProtocol_MVOStaking",
        "nameLocation": "1127:28:0",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "3e4a89d1",
            "id": 37,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "adminStatus",
            "nameLocation": "1222:11:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "1242:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 37,
                  "src": "1234:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1233:14:0"
            },
            "returnParameters": {
              "id": 36,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 35,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 37,
                  "src": "1271:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 34,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1271:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1270:6:0"
            },
            "scope": 38,
            "src": "1213:64:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 1968,
        "src": "1117:163:0",
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 39,
              "name": "ReentrancyGuard",
              "nameLocations": [
                "1307:15:0"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1995,
              "src": "1307:15:0"
            },
            "id": 40,
            "nodeType": "InheritanceSpecifier",
            "src": "1307:15:0"
          }
        ],
        "canonicalName": "MVOStaking",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1967,
        "linearizedBaseContracts": [
          1967,
          1995
        ],
        "name": "MVOStaking",
        "nameLocation": "1293:10:0",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 43,
            "libraryName": {
              "id": 41,
              "name": "SafeTransferLib",
              "nameLocations": [
                "1336:15:0"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2059,
              "src": "1336:15:0"
            },
            "nodeType": "UsingForDirective",
            "src": "1330:34:0",
            "typeName": {
              "id": 42,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1356:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "canonicalName": "MVOStaking.MVO",
            "documentation": {
              "id": 44,
              "nodeType": "StructuredDocumentation",
              "src": "1566:1060:0",
              "text": "@notice 'listenURI' represents the web2 URI at which dApp users can contact this MVO (note this is typically an http proxy endpoint)\n @notice 'stakingAddress' is the EOA from which the MVO's owner stakes tokens in this contract, and receives mints when claiming rewards\n @notice 'signingAddress' corresponds to the privkey with which this MVO signs OperationsBlocks, allowing sig verification by peers and dApps\n @notice 'encrPubkey' is the public key used to faciliate ECIES encryption between dApp users and the MVO\n @notice 'stakingQuantum' is the amount staked by stakingAddress in this contract\n @notice 'memberPoolId' is updated when the MVO joins or creates a pool\n @notice 'rating' is initially unused in this contract, but may be used for purposes such as slashing in conjunction with 'reducePoints()', offchain reputation trackers, etc.\n @notice 'active' is an administrative enable/shutoff switch\n @notice except for stakingQuantum and memberPoolId, all of these values can be configured only by admins"
            },
            "id": 61,
            "members": [
              {
                "constant": false,
                "id": 46,
                "mutability": "mutable",
                "name": "listenURI",
                "nameLocation": "2661:9:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2654:16:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 45,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "2654:6:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 48,
                "mutability": "mutable",
                "name": "stakingAddress",
                "nameLocation": "2697:14:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2681:30:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address_payable",
                  "typeString": "address payable"
                },
                "typeName": {
                  "id": 47,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2681:15:0",
                  "stateMutability": "payable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 50,
                "mutability": "mutable",
                "name": "signingAddress",
                "nameLocation": "2730:14:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2722:22:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 49,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2722:7:0",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 52,
                "mutability": "mutable",
                "name": "encrPubkey",
                "nameLocation": "2762:10:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2755:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 51,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "2755:6:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 54,
                "mutability": "mutable",
                "name": "stakingQuantum",
                "nameLocation": "2791:14:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2783:22:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 53,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2783:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 56,
                "mutability": "mutable",
                "name": "memberPoolId",
                "nameLocation": "2824:12:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2816:20:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint120",
                  "typeString": "uint120"
                },
                "typeName": {
                  "id": 55,
                  "name": "uint120",
                  "nodeType": "ElementaryTypeName",
                  "src": "2816:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint120",
                    "typeString": "uint120"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 58,
                "mutability": "mutable",
                "name": "rating",
                "nameLocation": "2855:6:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2847:14:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint120",
                  "typeString": "uint120"
                },
                "typeName": {
                  "id": 57,
                  "name": "uint120",
                  "nodeType": "ElementaryTypeName",
                  "src": "2847:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint120",
                    "typeString": "uint120"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 60,
                "mutability": "mutable",
                "name": "active",
                "nameLocation": "2877:6:0",
                "nodeType": "VariableDeclaration",
                "scope": 61,
                "src": "2872:11:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 59,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2872:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "MVO",
            "nameLocation": "2639:3:0",
            "nodeType": "StructDefinition",
            "scope": 1967,
            "src": "2632:259:0",
            "visibility": "public"
          },
          {
            "canonicalName": "MVOStaking.MVOPool",
            "documentation": {
              "id": 62,
              "nodeType": "StructuredDocumentation",
              "src": "2896:74:0",
              "text": "@notice the 'poolAddress' will match the stakingAddress of the creator"
            },
            "id": 67,
            "members": [
              {
                "constant": false,
                "id": 64,
                "mutability": "mutable",
                "name": "poolAddress",
                "nameLocation": "3018:11:0",
                "nodeType": "VariableDeclaration",
                "scope": 67,
                "src": "3002:27:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address_payable",
                  "typeString": "address payable"
                },
                "typeName": {
                  "id": 63,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3002:15:0",
                  "stateMutability": "payable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 66,
                "mutability": "mutable",
                "name": "dues",
                "nameLocation": "3047:4:0",
                "nodeType": "VariableDeclaration",
                "scope": 67,
                "src": "3040:11:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint96",
                  "typeString": "uint96"
                },
                "typeName": {
                  "id": 65,
                  "name": "uint96",
                  "nodeType": "ElementaryTypeName",
                  "src": "3040:6:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "MVOPool",
            "nameLocation": "2983:7:0",
            "nodeType": "StructDefinition",
            "scope": 1967,
            "src": "2976:83:0",
            "visibility": "public"
          },
          {
            "canonicalName": "MVOStaking.ApprovalTypes",
            "documentation": {
              "id": 68,
              "nodeType": "StructuredDocumentation",
              "src": "3064:33:0",
              "text": "types to distinguish Requests"
            },
            "id": 72,
            "members": [
              {
                "id": 69,
                "name": "MinStake",
                "nameLocation": "3121:8:0",
                "nodeType": "EnumValue",
                "src": "3121:8:0"
              },
              {
                "id": 70,
                "name": "Protocol",
                "nameLocation": "3131:8:0",
                "nodeType": "EnumValue",
                "src": "3131:8:0"
              },
              {
                "id": 71,
                "name": "PointsBot",
                "nameLocation": "3141:9:0",
                "nodeType": "EnumValue",
                "src": "3141:9:0"
              }
            ],
            "name": "ApprovalTypes",
            "nameLocation": "3105:13:0",
            "nodeType": "EnumDefinition",
            "src": "3100:52:0"
          },
          {
            "canonicalName": "MVOStaking.Requests",
            "documentation": {
              "id": 73,
              "nodeType": "StructuredDocumentation",
              "src": "3160:101:0",
              "text": "@notice to track admin update requests; addresses truncated to bytes8 for size/gas considerations"
            },
            "id": 81,
            "members": [
              {
                "constant": false,
                "id": 75,
                "mutability": "mutable",
                "name": "requester1",
                "nameLocation": "3301:10:0",
                "nodeType": "VariableDeclaration",
                "scope": 81,
                "src": "3294:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes8",
                  "typeString": "bytes8"
                },
                "typeName": {
                  "id": 74,
                  "name": "bytes8",
                  "nodeType": "ElementaryTypeName",
                  "src": "3294:6:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 77,
                "mutability": "mutable",
                "name": "requester2",
                "nameLocation": "3329:10:0",
                "nodeType": "VariableDeclaration",
                "scope": 81,
                "src": "3322:17:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes8",
                  "typeString": "bytes8"
                },
                "typeName": {
                  "id": 76,
                  "name": "bytes8",
                  "nodeType": "ElementaryTypeName",
                  "src": "3322:6:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 80,
                "mutability": "mutable",
                "name": "requestType",
                "nameLocation": "3358:11:0",
                "nodeType": "VariableDeclaration",
                "scope": 81,
                "src": "3344:25:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                  "typeString": "enum MVOStaking.ApprovalTypes"
                },
                "typeName": {
                  "id": 79,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 78,
                    "name": "ApprovalTypes",
                    "nameLocations": [
                      "3344:13:0"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 72,
                    "src": "3344:13:0"
                  },
                  "referencedDeclaration": 72,
                  "src": "3344:13:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                    "typeString": "enum MVOStaking.ApprovalTypes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Requests",
            "nameLocation": "3274:8:0",
            "nodeType": "StructDefinition",
            "scope": 1967,
            "src": "3267:110:0",
            "visibility": "public"
          },
          {
            "canonicalName": "MVOStaking.Timelock",
            "documentation": {
              "id": 82,
              "nodeType": "StructuredDocumentation",
              "src": "3382:71:0",
              "text": "@notice mirrors Timelock{} in TimelockManager and DAOPool contracts"
            },
            "id": 91,
            "members": [
              {
                "constant": false,
                "id": 84,
                "mutability": "mutable",
                "name": "totalAmount",
                "nameLocation": "3494:11:0",
                "nodeType": "VariableDeclaration",
                "scope": 91,
                "src": "3486:19:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 83,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3486:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 86,
                "mutability": "mutable",
                "name": "remainingAmount",
                "nameLocation": "3524:15:0",
                "nodeType": "VariableDeclaration",
                "scope": 91,
                "src": "3516:23:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 85,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3516:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 88,
                "mutability": "mutable",
                "name": "releaseStart",
                "nameLocation": "3558:12:0",
                "nodeType": "VariableDeclaration",
                "scope": 91,
                "src": "3550:20:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 87,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "3550:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 90,
                "mutability": "mutable",
                "name": "releaseEnd",
                "nameLocation": "3589:10:0",
                "nodeType": "VariableDeclaration",
                "scope": 91,
                "src": "3581:18:0",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 89,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "3581:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Timelock",
            "nameLocation": "3466:8:0",
            "nodeType": "StructDefinition",
            "scope": 1967,
            "src": "3459:148:0",
            "visibility": "public"
          },
          {
            "constant": true,
            "documentation": {
              "id": 92,
              "nodeType": "StructuredDocumentation",
              "src": "3615:165:0",
              "text": "@notice constant variable for ETH mainnet: approximated via 7150 blocks/day, 365 days per year\n @dev this must be altered for deployments on other chains"
            },
            "id": 95,
            "mutability": "constant",
            "name": "BLOCKS_PER_YEAR",
            "nameLocation": "3812:15:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "3786:51:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 93,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3786:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "32363039373530",
              "id": 94,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "3830:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2609750_by_1",
                "typeString": "int_const 2609750"
              },
              "value": "2609750"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "documentation": {
              "id": 96,
              "nodeType": "StructuredDocumentation",
              "src": "3844:38:0",
              "text": "@dev 18 decimal token calculations"
            },
            "id": 99,
            "mutability": "constant",
            "name": "DECIMALS",
            "nameLocation": "3914:8:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "3888:41:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 97,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3888:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31653138",
              "id": 98,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "3925:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "value": "1e18"
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 100,
              "nodeType": "StructuredDocumentation",
              "src": "3938:55:0",
              "text": "@notice $ENSHROUD token contract address, immutable"
            },
            "functionSelector": "acf2040c",
            "id": 102,
            "mutability": "immutable",
            "name": "enshroudToken",
            "nameLocation": "4024:13:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "3999:38:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 101,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "3999:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 103,
              "nodeType": "StructuredDocumentation",
              "src": "4044:55:0",
              "text": "@notice block starting point for epoch calculations"
            },
            "functionSelector": "4cdc9c63",
            "id": 105,
            "mutability": "immutable",
            "name": "genesisBlock",
            "nameLocation": "4130:12:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4105:37:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 104,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "4105:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 106,
              "nodeType": "StructuredDocumentation",
              "src": "4149:51:0",
              "text": "@notice immutable interface for 'enshroudToken'"
            },
            "id": 109,
            "mutability": "immutable",
            "name": "iEnshroudToken",
            "nameLocation": "4249:14:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4206:57:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
              "typeString": "contract IERC20Permit_MVOStaking"
            },
            "typeName": {
              "id": 108,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 107,
                "name": "IERC20Permit_MVOStaking",
                "nameLocations": [
                  "4206:23:0"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 30,
                "src": "4206:23:0"
              },
              "referencedDeclaration": 30,
              "src": "4206:23:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
                "typeString": "contract IERC20Permit_MVOStaking"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 110,
              "nodeType": "StructuredDocumentation",
              "src": "4270:44:0",
              "text": "@notice TimelockManager contract address"
            },
            "functionSelector": "bf5669bd",
            "id": 112,
            "mutability": "immutable",
            "name": "timelockManager",
            "nameLocation": "4345:15:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4320:40:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 111,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "4320:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 113,
              "nodeType": "StructuredDocumentation",
              "src": "4369:65:0",
              "text": "@notice Enshroud protocol addresses (to support V1, V2, etc.)"
            },
            "functionSelector": "b4601259",
            "id": 116,
            "mutability": "mutable",
            "name": "enshroudProtocols",
            "nameLocation": "4457:17:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4440:34:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_address_$dyn_storage",
              "typeString": "address[]"
            },
            "typeName": {
              "baseType": {
                "id": 114,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "4440:7:0",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "id": 115,
              "nodeType": "ArrayTypeName",
              "src": "4440:9:0",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                "typeString": "address[]"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 117,
              "nodeType": "StructuredDocumentation",
              "src": "4478:98:0",
              "text": "@notice counter for enshroudProtocols array, set to index of latest deployed Enshroud protocol"
            },
            "functionSelector": "aa7b43e1",
            "id": 119,
            "mutability": "mutable",
            "name": "protoIndex",
            "nameLocation": "4594:10:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4579:25:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 118,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "4579:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 120,
              "nodeType": "StructuredDocumentation",
              "src": "4613:143:0",
              "text": "@notice hash of off-chain codebase (i.e. MVO/Auditor node) location, or codebase in its entirety, for user verification. Provided by admin."
            },
            "functionSelector": "18edaaf2",
            "id": 122,
            "mutability": "mutable",
            "name": "codeHash",
            "nameLocation": "4777:8:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4762:23:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 121,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "4762:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 123,
              "nodeType": "StructuredDocumentation",
              "src": "4794:62:0",
              "text": "@notice minimum amount of stake required for an active MVO"
            },
            "functionSelector": "375b3c0a",
            "id": 125,
            "mutability": "mutable",
            "name": "minStake",
            "nameLocation": "4877:8:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4862:23:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 124,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "4862:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 126,
              "nodeType": "StructuredDocumentation",
              "src": "4892:70:0",
              "text": "@notice counter for 'mvoIds' array index via 'mvoIdsIndex' mapping"
            },
            "functionSelector": "c0fd4e02",
            "id": 128,
            "mutability": "mutable",
            "name": "mvoIndex",
            "nameLocation": "4983:8:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "4968:23:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 127,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "4968:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 129,
              "nodeType": "StructuredDocumentation",
              "src": "4998:123:0",
              "text": "@notice total amount of staked tokens, used to calculate relative staking amount for a given MVO in selection mechanism"
            },
            "functionSelector": "8b0e9f3f",
            "id": 131,
            "mutability": "mutable",
            "name": "totalStake",
            "nameLocation": "5142:10:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5127:25:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 130,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "5127:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 132,
              "nodeType": "StructuredDocumentation",
              "src": "5159:138:0",
              "text": "@notice total amount of awarded points outstanding, used to calculate relative pointsBalance for a given MVO when claiming reward mint"
            },
            "functionSelector": "567142be",
            "id": 134,
            "mutability": "mutable",
            "name": "totalPoints",
            "nameLocation": "5318:11:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5303:26:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 133,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "5303:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 135,
              "nodeType": "StructuredDocumentation",
              "src": "5333:75:0",
              "text": "@notice address used by bot that imports points awarded on other chains"
            },
            "id": 137,
            "mutability": "mutable",
            "name": "pointsBot",
            "nameLocation": "5428:9:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5411:26:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 136,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "5411:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 138,
              "nodeType": "StructuredDocumentation",
              "src": "5444:43:0",
              "text": "@notice for the MVO selection algorithm"
            },
            "functionSelector": "ab50ba41",
            "id": 141,
            "mutability": "mutable",
            "name": "mvoIds",
            "nameLocation": "5509:6:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5493:22:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
              "typeString": "string[]"
            },
            "typeName": {
              "baseType": {
                "id": 139,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "5493:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "id": 140,
              "nodeType": "ArrayTypeName",
              "src": "5493:8:0",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                "typeString": "string[]"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 142,
              "nodeType": "StructuredDocumentation",
              "src": "5519:60:0",
              "text": "@notice used for tracking state of update*() invocations"
            },
            "id": 147,
            "mutability": "mutable",
            "name": "updateRequested",
            "nameLocation": "5623:15:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5585:53:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
              "typeString": "mapping(address => struct MVOStaking.Requests)"
            },
            "typeName": {
              "id": 146,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 143,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5593:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "5585:28:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                "typeString": "mapping(address => struct MVOStaking.Requests)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 145,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 144,
                  "name": "Requests",
                  "nameLocations": [
                    "5604:8:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 81,
                  "src": "5604:8:0"
                },
                "referencedDeclaration": 81,
                "src": "5604:8:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Requests_$81_storage_ptr",
                  "typeString": "struct MVOStaking.Requests"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 148,
              "nodeType": "StructuredDocumentation",
              "src": "5645:64:0",
              "text": "@notice MVO staking address mapped to current points balance"
            },
            "functionSelector": "25ca4cff",
            "id": 152,
            "mutability": "mutable",
            "name": "pointsBalance",
            "nameLocation": "5750:13:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5715:48:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 151,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 149,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5723:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "5715:27:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 150,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5734:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 153,
              "nodeType": "StructuredDocumentation",
              "src": "5770:80:0",
              "text": "@notice maps an mvoId to its index number ('mvoIndex') in the 'mvoIds' array"
            },
            "functionSelector": "32954365",
            "id": 157,
            "mutability": "mutable",
            "name": "mvoIdsIndex",
            "nameLocation": "5890:11:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5856:45:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
              "typeString": "mapping(string => uint256)"
            },
            "typeName": {
              "id": 156,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 154,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "5864:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "5856:26:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                "typeString": "mapping(string => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 155,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5874:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 158,
              "nodeType": "StructuredDocumentation",
              "src": "5908:59:0",
              "text": "@notice maps an MVO's mvoId to corresponding MVO struct"
            },
            "functionSelector": "8accb951",
            "id": 163,
            "mutability": "mutable",
            "name": "idToMVO",
            "nameLocation": "6003:7:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "5973:37:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
              "typeString": "mapping(string => struct MVOStaking.MVO)"
            },
            "typeName": {
              "id": 162,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 159,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "5981:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              },
              "nodeType": "Mapping",
              "src": "5973:22:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                "typeString": "mapping(string => struct MVOStaking.MVO)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 161,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 160,
                  "name": "MVO",
                  "nameLocations": [
                    "5991:3:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 61,
                  "src": "5991:3:0"
                },
                "referencedDeclaration": 61,
                "src": "5991:3:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                  "typeString": "struct MVOStaking.MVO"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 164,
              "nodeType": "StructuredDocumentation",
              "src": "6017:98:0",
              "text": "@notice maps year to the amount of MVO incentive tokens remaining for reward mint in such year"
            },
            "functionSelector": "43991977",
            "id": 168,
            "mutability": "mutable",
            "name": "yearToTokensRemaining",
            "nameLocation": "6156:21:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "6121:56:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 167,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 165,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6129:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "6121:27:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 166,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6140:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 169,
              "nodeType": "StructuredDocumentation",
              "src": "6184:65:0",
              "text": "@notice maps an MVOPoolId to its corresponding MVOPool struct"
            },
            "functionSelector": "beaf95f3",
            "id": 174,
            "mutability": "mutable",
            "name": "idToMVOPool",
            "nameLocation": "6290:11:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "6255:46:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
              "typeString": "mapping(uint256 => struct MVOStaking.MVOPool)"
            },
            "typeName": {
              "id": 173,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 170,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6263:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "6255:27:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                "typeString": "mapping(uint256 => struct MVOStaking.MVOPool)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 172,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 171,
                  "name": "MVOPool",
                  "nameLocations": [
                    "6274:7:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 67,
                  "src": "6274:7:0"
                },
                "referencedDeclaration": 67,
                "src": "6274:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MVOPool_$67_storage_ptr",
                  "typeString": "struct MVOStaking.MVOPool"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 175,
              "nodeType": "StructuredDocumentation",
              "src": "6308:72:0",
              "text": "@notice maps a timelock beneficiary address to their Timelock struct"
            },
            "functionSelector": "1369a927",
            "id": 180,
            "mutability": "mutable",
            "name": "timelocks",
            "nameLocation": "6422:9:0",
            "nodeType": "VariableDeclaration",
            "scope": 1967,
            "src": "6386:45:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
              "typeString": "mapping(address => struct MVOStaking.Timelock)"
            },
            "typeName": {
              "id": 179,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 176,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6394:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6386:28:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                "typeString": "mapping(address => struct MVOStaking.Timelock)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 178,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 177,
                  "name": "Timelock",
                  "nameLocations": [
                    "6405:8:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 91,
                  "src": "6405:8:0"
                },
                "referencedDeclaration": 91,
                "src": "6405:8:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Timelock_$91_storage_ptr",
                  "typeString": "struct MVOStaking.Timelock"
                }
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "eventSelector": "e64e12d565716cb1d472831954a8aa6b8f660bd3d1ac40f26d0484b74061ee9b",
            "id": 184,
            "name": "CodeHashChanged",
            "nameLocation": "6625:15:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 182,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newCodeHash",
                  "nameLocation": "6649:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 184,
                  "src": "6641:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 181,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6641:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6640:21:0"
            },
            "src": "6619:43:0"
          },
          {
            "anonymous": false,
            "eventSelector": "f4045d7dd317de89564c3f12c35961242ed2a4dce3ae4e7a75847ffa04bb0834",
            "id": 188,
            "name": "MinimumStakeUpdated",
            "nameLocation": "6676:19:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 186,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newMinStake",
                  "nameLocation": "6704:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 188,
                  "src": "6696:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 185,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6696:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6695:21:0"
            },
            "src": "6670:47:0"
          },
          {
            "anonymous": false,
            "eventSelector": "588475b865c1e30d6d4caa2e0da2b4009157a04d3f2ab7d0d3b3aa08f985ef83",
            "id": 196,
            "name": "MVOPoolCreated",
            "nameLocation": "6731:14:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 195,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 190,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "poolId",
                  "nameLocation": "6754:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 196,
                  "src": "6746:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 189,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6746:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 192,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "dues",
                  "nameLocation": "6770:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 196,
                  "src": "6762:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 191,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6762:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 194,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "creatorMvoID",
                  "nameLocation": "6783:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 196,
                  "src": "6776:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 193,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6776:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6745:51:0"
            },
            "src": "6725:72:0"
          },
          {
            "anonymous": false,
            "eventSelector": "ed2863a3907531988ef6702ca5ff5df0d5e70ab1434c2751d510fdd8059a1a9a",
            "id": 202,
            "name": "MVOPoolDeleted",
            "nameLocation": "6811:14:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 198,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "poolId",
                  "nameLocation": "6834:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 202,
                  "src": "6826:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 197,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6826:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 200,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "creatorMvoID",
                  "nameLocation": "6849:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 202,
                  "src": "6842:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 199,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6842:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6825:37:0"
            },
            "src": "6805:58:0"
          },
          {
            "anonymous": false,
            "eventSelector": "a505781a5116eef5a80d5b66d75962b0569fae3a78ad4bbb9f70a67da73b61c9",
            "id": 208,
            "name": "MVOStakeUpdated",
            "nameLocation": "6877:15:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 204,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "mvoID",
                  "nameLocation": "6900:5:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 208,
                  "src": "6893:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 203,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6893:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 206,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "stakingQuantum",
                  "nameLocation": "6915:14:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 208,
                  "src": "6907:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 205,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6907:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6892:38:0"
            },
            "src": "6871:60:0"
          },
          {
            "anonymous": false,
            "eventSelector": "5d7ee3a2caa09465a672230cd161ff80d4c30aa4f31bd8f3e03249d859d24a2c",
            "id": 212,
            "name": "MVOStaking_ProtocolUpdated",
            "nameLocation": "6945:26:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 210,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newProtocol",
                  "nameLocation": "6980:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 212,
                  "src": "6972:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6972:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6971:21:0"
            },
            "src": "6939:54:0"
          },
          {
            "anonymous": false,
            "eventSelector": "95c2d1682da1c94cf72722155675f023c7e909538f90354357762bd45925ea70",
            "id": 220,
            "name": "MVOStaking_Staked",
            "nameLocation": "7007:17:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 214,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "7051:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 220,
                  "src": "7035:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 213,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7035:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 216,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "7076:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 220,
                  "src": "7068:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 215,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7068:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 218,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nameLocation": "7101:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 220,
                  "src": "7093:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 217,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7093:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7024:95:0"
            },
            "src": "7001:119:0"
          },
          {
            "anonymous": false,
            "eventSelector": "54e8265d924142b11826bd303e79a36db5df2ce53901fd41c19e40008818a35a",
            "id": 228,
            "name": "MVOStaking_Unstaked",
            "nameLocation": "7134:19:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 227,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 222,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "7180:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 228,
                  "src": "7164:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7164:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 224,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "7205:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 228,
                  "src": "7197:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 223,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7197:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 226,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nameLocation": "7230:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 228,
                  "src": "7222:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 225,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7222:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7153:95:0"
            },
            "src": "7128:121:0"
          },
          {
            "anonymous": false,
            "eventSelector": "cf33f5de1ef67e6e5ec8006d8cff0400a249c994a029dea6b1926a58c8024546",
            "id": 237,
            "name": "MVOStatusChanged",
            "nameLocation": "7263:16:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 230,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "mvoID",
                  "nameLocation": "7287:5:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "7280:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 229,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7280:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 233,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "updatedMVO",
                  "nameLocation": "7298:10:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "7294:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MVO_$61_memory_ptr",
                    "typeString": "struct MVOStaking.MVO"
                  },
                  "typeName": {
                    "id": 232,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 231,
                      "name": "MVO",
                      "nameLocations": [
                        "7294:3:0"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 61,
                      "src": "7294:3:0"
                    },
                    "referencedDeclaration": 61,
                    "src": "7294:3:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                      "typeString": "struct MVOStaking.MVO"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 235,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "7318:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "7310:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 234,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7310:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7279:47:0"
            },
            "src": "7257:70:0"
          },
          {
            "anonymous": false,
            "eventSelector": "2292e1cf0767804f0c9d4e1f6a5c721c2e11d13a76402bc549936f0f5a27af6a",
            "id": 245,
            "name": "PointsAwarded",
            "nameLocation": "7341:13:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 244,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 239,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "mvoAddress",
                  "nameLocation": "7371:10:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "7355:26:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 238,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7355:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 241,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "points",
                  "nameLocation": "7391:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "7383:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 240,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7383:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 243,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "7407:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "7399:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 242,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7399:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7354:61:0"
            },
            "src": "7335:81:0"
          },
          {
            "anonymous": false,
            "eventSelector": "727ff814ae487612c4f2a334a45b1ffd2142f287950070c6d0eb667beaecf979",
            "id": 249,
            "name": "PointsBotUpdated",
            "nameLocation": "7427:16:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 247,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "botAddress",
                  "nameLocation": "7452:10:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 249,
                  "src": "7444:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 246,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7444:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7443:20:0"
            },
            "src": "7421:43:0"
          },
          {
            "anonymous": false,
            "eventSelector": "c3b6eea41a8033c9dffd641ba61665d9b9d5d33a3e2db4bb87952eff9d02d88d",
            "id": 255,
            "name": "PointsReduced",
            "nameLocation": "7478:13:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 254,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 251,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "mvoAddress",
                  "nameLocation": "7508:10:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 255,
                  "src": "7492:26:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 250,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7492:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 253,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "points",
                  "nameLocation": "7528:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 255,
                  "src": "7520:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 252,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7520:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7491:44:0"
            },
            "src": "7472:64:0"
          },
          {
            "anonymous": false,
            "eventSelector": "9969f40ab26a744c07f08a9a272e0e8e5a8485a11a4b0e524453a08ed4f90a7f",
            "id": 263,
            "name": "PoolMembershipUpdated",
            "nameLocation": "7550:21:0",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 257,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "newPoolId",
                  "nameLocation": "7598:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 263,
                  "src": "7582:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 256,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7582:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 259,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oldPoolId",
                  "nameLocation": "7626:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 263,
                  "src": "7618:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 258,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7618:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 261,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "memberMvoID",
                  "nameLocation": "7653:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 263,
                  "src": "7646:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 260,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7646:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7571:100:0"
            },
            "src": "7544:128:0"
          },
          {
            "body": {
              "id": 283,
              "nodeType": "Block",
              "src": "7965:149:0",
              "statements": [
                {
                  "condition": {
                    "id": 277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "7979:92:0",
                    "subExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 274,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "8060:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8064:6:0",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "8060:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 267,
                                "name": "enshroudProtocols",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 116,
                                "src": "8009:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 271,
                              "indexExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 268,
                                  "name": "protoIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 119,
                                  "src": "8027:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 269,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8038:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8027:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8009:31:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 266,
                            "name": "IEnshroudProtocol_MVOStaking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38,
                            "src": "7980:28:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IEnshroudProtocol_MVOStaking_$38_$",
                              "typeString": "type(contract IEnshroudProtocol_MVOStaking)"
                            }
                          },
                          "id": 272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7980:61:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IEnshroudProtocol_MVOStaking_$38",
                            "typeString": "contract IEnshroudProtocol_MVOStaking"
                          }
                        },
                        "id": 273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8048:11:0",
                        "memberName": "adminStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 37,
                        "src": "7980:79:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) view external returns (bool)"
                        }
                      },
                      "id": 276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7980:91:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 281,
                  "nodeType": "IfStatement",
                  "src": "7970:124:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 278,
                        "name": "NotAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 310,
                        "src": "8084:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 279,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8084:10:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 280,
                    "nodeType": "RevertStatement",
                    "src": "8077:17:0"
                  }
                },
                {
                  "id": 282,
                  "nodeType": "PlaceholderStatement",
                  "src": "8105:1:0"
                }
              ]
            },
            "documentation": {
              "id": 264,
              "nodeType": "StructuredDocumentation",
              "src": "7859:79:0",
              "text": "@notice guarantees caller is an admin in the last-deployed EnshroudProtocol"
            },
            "id": 284,
            "name": "onlyAdmin",
            "nameLocation": "7953:9:0",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 265,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7962:2:0"
            },
            "src": "7944:170:0",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "errorSelector": "97b7798b",
            "id": 286,
            "name": "AmountLargerThanBalance",
            "nameLocation": "8307:23:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 285,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8330:2:0"
            },
            "src": "8301:32:0"
          },
          {
            "errorSelector": "8f201a73",
            "id": 288,
            "name": "AmountLargerThanStake",
            "nameLocation": "8345:21:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 287,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8366:2:0"
            },
            "src": "8339:30:0"
          },
          {
            "errorSelector": "a2d2891f",
            "id": 290,
            "name": "AmountLargerThanWithdrawable",
            "nameLocation": "8381:28:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8409:2:0"
            },
            "src": "8375:37:0"
          },
          {
            "errorSelector": "baefcc6c",
            "id": 292,
            "name": "DuesTooLarge",
            "nameLocation": "8424:12:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 291,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8436:2:0"
            },
            "src": "8418:21:0"
          },
          {
            "errorSelector": "ee15045d",
            "id": 294,
            "name": "IDAlreadyInUse",
            "nameLocation": "8451:14:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 293,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8465:2:0"
            },
            "src": "8445:23:0"
          },
          {
            "errorSelector": "b147cb75",
            "id": 296,
            "name": "IDAndMsgSenderMismatch",
            "nameLocation": "8480:22:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 295,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8502:2:0"
            },
            "src": "8474:31:0"
          },
          {
            "errorSelector": "cbaa79dd",
            "id": 298,
            "name": "IncorrectSigLength",
            "nameLocation": "8517:18:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 297,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8535:2:0"
            },
            "src": "8511:27:0"
          },
          {
            "errorSelector": "7a47c9a2",
            "id": 300,
            "name": "InvalidChainId",
            "nameLocation": "8550:14:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 299,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8564:2:0"
            },
            "src": "8544:23:0"
          },
          {
            "errorSelector": "8baa579f",
            "id": 302,
            "name": "InvalidSignature",
            "nameLocation": "8579:16:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8595:2:0"
            },
            "src": "8573:25:0"
          },
          {
            "errorSelector": "ff633a38",
            "id": 304,
            "name": "LengthMismatch",
            "nameLocation": "8610:14:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8624:2:0"
            },
            "src": "8604:23:0"
          },
          {
            "errorSelector": "74c4d3e0",
            "id": 306,
            "name": "MintPeriodExpired",
            "nameLocation": "8639:17:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 305,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8656:2:0"
            },
            "src": "8633:26:0"
          },
          {
            "errorSelector": "c668fa8d",
            "id": 308,
            "name": "NotActiveMVO",
            "nameLocation": "8671:12:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 307,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8683:2:0"
            },
            "src": "8665:21:0"
          },
          {
            "errorSelector": "7bfa4b9f",
            "id": 310,
            "name": "NotAdmin",
            "nameLocation": "8698:8:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 309,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8706:2:0"
            },
            "src": "8692:17:0"
          },
          {
            "errorSelector": "8d722fb0",
            "id": 312,
            "name": "OnlyPointsRobot",
            "nameLocation": "8721:15:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 311,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8736:2:0"
            },
            "src": "8715:24:0"
          },
          {
            "errorSelector": "dc68e0d0",
            "id": 314,
            "name": "OnlyProtocolContract",
            "nameLocation": "8751:20:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 313,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8771:2:0"
            },
            "src": "8745:29:0"
          },
          {
            "errorSelector": "82de3804",
            "id": 316,
            "name": "OnlyTimelockManager",
            "nameLocation": "8786:19:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 315,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8805:2:0"
            },
            "src": "8780:28:0"
          },
          {
            "errorSelector": "9c8787c0",
            "id": 318,
            "name": "PoolDoesNotExist",
            "nameLocation": "8820:16:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 317,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8836:2:0"
            },
            "src": "8814:25:0"
          },
          {
            "errorSelector": "755f2fa2",
            "id": 320,
            "name": "UnclaimedPoints",
            "nameLocation": "8851:15:0",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 319,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8866:2:0"
            },
            "src": "8845:24:0"
          },
          {
            "body": {
              "id": 405,
              "nodeType": "Block",
              "src": "9566:806:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 335,
                        "name": "_enshroudProtocol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 323,
                        "src": "9600:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 332,
                        "name": "enshroudProtocols",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 116,
                        "src": "9577:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9595:4:0",
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "9577:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$",
                        "typeString": "function (address[] storage pointer,address)"
                      }
                    },
                    "id": 336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9577:41:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 337,
                  "nodeType": "ExpressionStatement",
                  "src": "9577:41:0"
                },
                {
                  "expression": {
                    "id": 340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 338,
                      "name": "protoIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 119,
                      "src": "9623:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9636:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9623:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 341,
                  "nodeType": "ExpressionStatement",
                  "src": "9623:14:0"
                },
                {
                  "expression": {
                    "id": 344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 342,
                      "name": "enshroudToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 102,
                      "src": "9648:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 343,
                      "name": "_enshroudToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 325,
                      "src": "9664:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9648:30:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 345,
                  "nodeType": "ExpressionStatement",
                  "src": "9648:30:0"
                },
                {
                  "expression": {
                    "id": 348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 346,
                      "name": "timelockManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 112,
                      "src": "9689:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 347,
                      "name": "_timelockManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 327,
                      "src": "9707:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9689:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 349,
                  "nodeType": "ExpressionStatement",
                  "src": "9689:34:0"
                },
                {
                  "expression": {
                    "id": 354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 350,
                      "name": "iEnshroudToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 109,
                      "src": "9734:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
                        "typeString": "contract IERC20Permit_MVOStaking"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 352,
                          "name": "_enshroudToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 325,
                          "src": "9775:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 351,
                        "name": "IERC20Permit_MVOStaking",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30,
                        "src": "9751:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IERC20Permit_MVOStaking_$30_$",
                          "typeString": "type(contract IERC20Permit_MVOStaking)"
                        }
                      },
                      "id": 353,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9751:39:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
                        "typeString": "contract IERC20Permit_MVOStaking"
                      }
                    },
                    "src": "9734:56:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
                      "typeString": "contract IERC20Permit_MVOStaking"
                    }
                  },
                  "id": 355,
                  "nodeType": "ExpressionStatement",
                  "src": "9734:56:0"
                },
                {
                  "expression": {
                    "id": 358,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 356,
                      "name": "minStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 125,
                      "src": "9801:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 357,
                      "name": "_minStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 329,
                      "src": "9812:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9801:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 359,
                  "nodeType": "ExpressionStatement",
                  "src": "9801:20:0"
                },
                {
                  "expression": {
                    "id": 363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 360,
                      "name": "genesisBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 105,
                      "src": "9911:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 361,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "9926:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 362,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9932:6:0",
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "src": "9926:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9911:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 364,
                  "nodeType": "ExpressionStatement",
                  "src": "9911:27:0"
                },
                {
                  "expression": {
                    "id": 371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 365,
                        "name": "yearToTokensRemaining",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 168,
                        "src": "10095:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 367,
                      "indexExpression": {
                        "hexValue": "31",
                        "id": 366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10117:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10095:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 370,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "35303030303030",
                        "id": 368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10122:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5000000_by_1",
                          "typeString": "int_const 5000000"
                        },
                        "value": "5000000"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "id": 369,
                        "name": "DECIMALS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 99,
                        "src": "10132:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10122:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10095:45:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 372,
                  "nodeType": "ExpressionStatement",
                  "src": "10095:45:0"
                },
                {
                  "expression": {
                    "id": 379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 373,
                        "name": "yearToTokensRemaining",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 168,
                        "src": "10151:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 375,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 374,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10173:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10151:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 378,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "34303030303030",
                        "id": 376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10178:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4000000_by_1",
                          "typeString": "int_const 4000000"
                        },
                        "value": "4000000"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "id": 377,
                        "name": "DECIMALS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 99,
                        "src": "10188:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10178:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10151:45:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 380,
                  "nodeType": "ExpressionStatement",
                  "src": "10151:45:0"
                },
                {
                  "expression": {
                    "id": 387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 381,
                        "name": "yearToTokensRemaining",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 168,
                        "src": "10207:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 383,
                      "indexExpression": {
                        "hexValue": "33",
                        "id": 382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10229:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10207:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 386,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "33303030303030",
                        "id": 384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10234:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3000000_by_1",
                          "typeString": "int_const 3000000"
                        },
                        "value": "3000000"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "id": 385,
                        "name": "DECIMALS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 99,
                        "src": "10244:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10234:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10207:45:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 388,
                  "nodeType": "ExpressionStatement",
                  "src": "10207:45:0"
                },
                {
                  "expression": {
                    "id": 395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 389,
                        "name": "yearToTokensRemaining",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 168,
                        "src": "10263:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 391,
                      "indexExpression": {
                        "hexValue": "34",
                        "id": 390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10285:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10263:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 394,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "32303030303030",
                        "id": 392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10290:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2000000_by_1",
                          "typeString": "int_const 2000000"
                        },
                        "value": "2000000"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "id": 393,
                        "name": "DECIMALS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 99,
                        "src": "10300:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10290:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10263:45:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 396,
                  "nodeType": "ExpressionStatement",
                  "src": "10263:45:0"
                },
                {
                  "expression": {
                    "id": 403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 397,
                        "name": "yearToTokensRemaining",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 168,
                        "src": "10319:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 399,
                      "indexExpression": {
                        "hexValue": "35",
                        "id": 398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10341:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10319:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "31303030303030",
                        "id": 400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10346:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000_by_1",
                          "typeString": "int_const 1000000"
                        },
                        "value": "1000000"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "id": 401,
                        "name": "DECIMALS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 99,
                        "src": "10356:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10346:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10319:45:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 404,
                  "nodeType": "ExpressionStatement",
                  "src": "10319:45:0"
                }
              ]
            },
            "documentation": {
              "id": 321,
              "nodeType": "StructuredDocumentation",
              "src": "9059:342:0",
              "text": "@param _enshroudProtocol: Enshroud Protocol contract address\n @param _enshroudToken: $ENSHROUD token contract address. Immutable.\n @param _timelockManager: contract address for $ENSHROUD token timelock manager. Immutable.\n @param _minStake: initial minimum staked amount of enshroudToken required for a signing MVO"
            },
            "id": 406,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 330,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 323,
                  "mutability": "mutable",
                  "name": "_enshroudProtocol",
                  "nameLocation": "9437:17:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 406,
                  "src": "9429:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9429:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 325,
                  "mutability": "mutable",
                  "name": "_enshroudToken",
                  "nameLocation": "9473:14:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 406,
                  "src": "9465:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 324,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9465:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 327,
                  "mutability": "mutable",
                  "name": "_timelockManager",
                  "nameLocation": "9506:16:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 406,
                  "src": "9498:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 326,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9498:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 329,
                  "mutability": "mutable",
                  "name": "_minStake",
                  "nameLocation": "9541:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 406,
                  "src": "9533:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 328,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9533:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9418:139:0"
            },
            "returnParameters": {
              "id": 331,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9566:0:0"
            },
            "scope": 1967,
            "src": "9407:965:0",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 518,
              "nodeType": "Block",
              "src": "10977:1280:0",
              "statements": [
                {
                  "assignments": [
                    415
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 415,
                      "mutability": "mutable",
                      "name": "notProtocol",
                      "nameLocation": "11062:11:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 518,
                      "src": "11057:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 414,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "11057:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "documentation": "@dev guarantee caller is in the array of deployed enshroudProtocols",
                  "id": 417,
                  "initialValue": {
                    "hexValue": "74727565",
                    "id": 416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11076:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11057:23:0"
                },
                {
                  "body": {
                    "id": 444,
                    "nodeType": "Block",
                    "src": "11222:101:0",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 429,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11232:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11236:6:0",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "11232:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 431,
                              "name": "enshroudProtocols",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 116,
                              "src": "11246:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 435,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 432,
                                "name": "pIdx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 419,
                                "src": "11264:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11269:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11264:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11246:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11232:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 443,
                        "nodeType": "IfStatement",
                        "src": "11228:90:0",
                        "trueBody": {
                          "id": 442,
                          "nodeType": "Block",
                          "src": "11273:45:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 437,
                                  "name": "notProtocol",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 415,
                                  "src": "11280:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "66616c7365",
                                  "id": 438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11294:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "11280:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 440,
                              "nodeType": "ExpressionStatement",
                              "src": "11280:19:0"
                            },
                            {
                              "id": 441,
                              "nodeType": "Break",
                              "src": "11306:5:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 423,
                      "name": "pIdx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 419,
                      "src": "11204:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11211:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11204:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 445,
                  "initializationExpression": {
                    "assignments": [
                      419
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 419,
                        "mutability": "mutable",
                        "name": "pIdx",
                        "nameLocation": "11171:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 445,
                        "src": "11163:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11163:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 422,
                    "initialValue": {
                      "expression": {
                        "id": 420,
                        "name": "enshroudProtocols",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 116,
                        "src": "11178:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 421,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11196:6:0",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11178:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11163:39:0"
                  },
                  "isSimpleCounterLoop": false,
                  "loopExpression": {
                    "expression": {
                      "id": 427,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "--",
                      "prefix": false,
                      "src": "11214:6:0",
                      "subExpression": {
                        "id": 426,
                        "name": "pIdx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 419,
                        "src": "11214:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 428,
                    "nodeType": "ExpressionStatement",
                    "src": "11214:6:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "11158:165:0"
                },
                {
                  "condition": {
                    "id": 446,
                    "name": "notProtocol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 415,
                    "src": "11337:11:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 450,
                  "nodeType": "IfStatement",
                  "src": "11333:46:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 447,
                        "name": "OnlyProtocolContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 314,
                        "src": "11357:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11357:22:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 449,
                    "nodeType": "RevertStatement",
                    "src": "11350:29:0"
                  }
                },
                {
                  "assignments": [
                    453
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 453,
                      "mutability": "mutable",
                      "name": "_leadMVO",
                      "nameLocation": "11404:8:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 518,
                      "src": "11392:20:0",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                        "typeString": "struct MVOStaking.MVO"
                      },
                      "typeName": {
                        "id": 452,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 451,
                          "name": "MVO",
                          "nameLocations": [
                            "11392:3:0"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 61,
                          "src": "11392:3:0"
                        },
                        "referencedDeclaration": 61,
                        "src": "11392:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                          "typeString": "struct MVOStaking.MVO"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 459,
                  "initialValue": {
                    "baseExpression": {
                      "id": 454,
                      "name": "idToMVO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 163,
                      "src": "11415:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                        "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                      }
                    },
                    "id": 458,
                    "indexExpression": {
                      "baseExpression": {
                        "id": 455,
                        "name": "_mvoIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 410,
                        "src": "11423:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 457,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11431:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "11423:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_calldata_ptr",
                        "typeString": "string calldata"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11415:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVO_$61_storage",
                      "typeString": "struct MVOStaking.MVO storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11392:42:0"
                },
                {
                  "id": 471,
                  "nodeType": "UncheckedBlock",
                  "src": "11445:111:0",
                  "statements": [
                    {
                      "expression": {
                        "id": 465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 460,
                            "name": "pointsBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 152,
                            "src": "11470:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 463,
                          "indexExpression": {
                            "expression": {
                              "id": 461,
                              "name": "_leadMVO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 453,
                              "src": "11484:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                                "typeString": "struct MVOStaking.MVO storage pointer"
                              }
                            },
                            "id": 462,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11493:14:0",
                            "memberName": "stakingAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 48,
                            "src": "11484:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "11470:38:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "hexValue": "33",
                          "id": 464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11512:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "11470:43:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 466,
                      "nodeType": "ExpressionStatement",
                      "src": "11470:43:0"
                    },
                    {
                      "expression": {
                        "id": 469,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 467,
                          "name": "totalPoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 134,
                          "src": "11528:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "hexValue": "33",
                          "id": 468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11543:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "11528:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 470,
                      "nodeType": "ExpressionStatement",
                      "src": "11528:16:0"
                    }
                  ]
                },
                {
                  "body": {
                    "id": 508,
                    "nodeType": "Block",
                    "src": "11893:285:0",
                    "statements": [
                      {
                        "assignments": [
                          481
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 481,
                            "mutability": "mutable",
                            "name": "_stakeAddr",
                            "nameLocation": "11916:10:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 508,
                            "src": "11908:18:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 480,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11908:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 488,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 482,
                              "name": "idToMVO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 163,
                              "src": "11929:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                                "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                              }
                            },
                            "id": 486,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 483,
                                "name": "_mvoIDs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 410,
                                "src": "11937:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "string calldata[] calldata"
                                }
                              },
                              "id": 485,
                              "indexExpression": {
                                "id": 484,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 473,
                                "src": "11945:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11937:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11929:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MVO_$61_storage",
                              "typeString": "struct MVOStaking.MVO storage ref"
                            }
                          },
                          "id": 487,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11949:14:0",
                          "memberName": "stakingAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 48,
                          "src": "11929:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11908:55:0"
                      },
                      {
                        "id": 500,
                        "nodeType": "UncheckedBlock",
                        "src": "11978:126:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "12007:27:0",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 489,
                                  "name": "pointsBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 152,
                                  "src": "12009:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 491,
                                "indexExpression": {
                                  "id": 490,
                                  "name": "_stakeAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "12023:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "12009:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 493,
                            "nodeType": "ExpressionStatement",
                            "src": "12007:27:0"
                          },
                          {
                            "expression": {
                              "id": 495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "12053:13:0",
                              "subExpression": {
                                "id": 494,
                                "name": "totalPoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 134,
                                "src": "12055:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 496,
                            "nodeType": "ExpressionStatement",
                            "src": "12053:13:0"
                          },
                          {
                            "expression": {
                              "id": 498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "12085:3:0",
                              "subExpression": {
                                "id": 497,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 473,
                                "src": "12087:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 499,
                            "nodeType": "ExpressionStatement",
                            "src": "12085:3:0"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 502,
                              "name": "_stakeAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "12137:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12149:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "expression": {
                                "id": 504,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "12152:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12158:7:0",
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "12152:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 501,
                            "name": "PointsAwarded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 245,
                            "src": "12123:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12123:43:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 507,
                        "nodeType": "EmitStatement",
                        "src": "12118:48:0"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 476,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 473,
                      "src": "11871:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 477,
                        "name": "_mvoIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 410,
                        "src": "11875:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11883:6:0",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11875:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11871:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "documentation": "@dev MVO will be able to claim tokens with their 'pointsBalance' via their 'stakingAddress', but note operations block sigs are made with 'signingAddress'.\n Start at [1] as [0] (lead MVO) was already handled above. Array length limited in protocol contract.",
                  "id": 509,
                  "initializationExpression": {
                    "assignments": [
                      473
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 473,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "11864:1:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 509,
                        "src": "11856:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 472,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11856:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 475,
                    "initialValue": {
                      "hexValue": "31",
                      "id": 474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11868:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11856:13:0"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "11851:327:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 511,
                          "name": "_leadMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 453,
                          "src": "12207:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                            "typeString": "struct MVOStaking.MVO storage pointer"
                          }
                        },
                        "id": 512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "12216:14:0",
                        "memberName": "stakingAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 48,
                        "src": "12207:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "33",
                        "id": 513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12232:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      {
                        "expression": {
                          "id": 514,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "12235:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "12241:7:0",
                        "memberName": "chainid",
                        "nodeType": "MemberAccess",
                        "src": "12235:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 510,
                      "name": "PointsAwarded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 245,
                      "src": "12193:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12193:56:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 517,
                  "nodeType": "EmitStatement",
                  "src": "12188:61:0"
                }
              ]
            },
            "documentation": {
              "id": 407,
              "nodeType": "StructuredDocumentation",
              "src": "10380:518:0",
              "text": "@notice award a lead MVO (3 points) and committee MVOs (1 point each) for each processed transaction, only callable by the protocol contract\n @dev uses idToMVO mapping to determine the committee MVO staking addresses; sigs not currently checked since only enshroudProtocol can call this method, and every invocation is preceeded by a call to checkMVOSig(); Reentrant-protected by each function in EnshroudProtocol which is able to call this function\n @param _mvoIDs: IDs of MVOs for the transaction"
            },
            "functionSelector": "c38b84a1",
            "id": 519,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "awardPoints",
            "nameLocation": "10913:11:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 410,
                  "mutability": "mutable",
                  "name": "_mvoIDs",
                  "nameLocation": "10953:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 519,
                  "src": "10935:25:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 408,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "10935:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 409,
                    "nodeType": "ArrayTypeName",
                    "src": "10935:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10924:43:0"
            },
            "returnParameters": {
              "id": 412,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10977:0:0"
            },
            "scope": 1967,
            "src": "10904:1353:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 628,
              "nodeType": "Block",
              "src": "12793:951:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 533,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "12871:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 534,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12875:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "12871:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 535,
                      "name": "pointsBot",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 137,
                      "src": "12885:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "12871:23:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "documentation": "@dev guarantee caller is the duly authorized point import bot",
                  "id": 540,
                  "nodeType": "IfStatement",
                  "src": "12867:53:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 537,
                        "name": "OnlyPointsRobot",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 312,
                        "src": "12903:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12903:17:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 539,
                    "nodeType": "RevertStatement",
                    "src": "12896:24:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 544,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 541,
                        "name": "_chainId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 522,
                        "src": "12929:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "id": 542,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "12941:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "12947:7:0",
                        "memberName": "chainid",
                        "nodeType": "MemberAccess",
                        "src": "12941:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "12929:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 545,
                        "name": "_chainId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 522,
                        "src": "12958:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12970:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "12958:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12929:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 552,
                  "nodeType": "IfStatement",
                  "src": "12925:71:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 549,
                        "name": "InvalidChainId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 300,
                        "src": "12980:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12980:16:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 551,
                    "nodeType": "RevertStatement",
                    "src": "12973:23:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 553,
                          "name": "_mvoIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 525,
                          "src": "13005:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                            "typeString": "string calldata[] calldata"
                          }
                        },
                        "id": 554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "13013:6:0",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "13005:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13023:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "13005:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 557,
                          "name": "_mvoIDs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 525,
                          "src": "13028:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                            "typeString": "string calldata[] calldata"
                          }
                        },
                        "id": 558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "13036:6:0",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "13028:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "expression": {
                          "id": 559,
                          "name": "_points",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 528,
                          "src": "13046:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                            "typeString": "uint256[] calldata"
                          }
                        },
                        "id": 560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "13054:6:0",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "13046:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "13028:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13005:55:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 567,
                  "nodeType": "IfStatement",
                  "src": "13001:96:0",
                  "trueBody": {
                    "id": 566,
                    "nodeType": "Block",
                    "src": "13062:35:0",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 563,
                            "name": "LengthMismatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 304,
                            "src": "13075:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                              "typeString": "function () pure returns (error)"
                            }
                          },
                          "id": 564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13075:16:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_error",
                            "typeString": "error"
                          }
                        },
                        "id": 565,
                        "nodeType": "RevertStatement",
                        "src": "13068:23:0"
                      }
                    ]
                  }
                },
                {
                  "body": {
                    "id": 626,
                    "nodeType": "Block",
                    "src": "13199:541:0",
                    "statements": [
                      {
                        "assignments": [
                          578
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 578,
                            "mutability": "mutable",
                            "name": "_mvo",
                            "nameLocation": "13223:4:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 626,
                            "src": "13211:16:0",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                              "typeString": "struct MVOStaking.MVO"
                            },
                            "typeName": {
                              "id": 577,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 576,
                                "name": "MVO",
                                "nameLocations": [
                                  "13211:3:0"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 61,
                                "src": "13211:3:0"
                              },
                              "referencedDeclaration": 61,
                              "src": "13211:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                                "typeString": "struct MVOStaking.MVO"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 584,
                        "initialValue": {
                          "baseExpression": {
                            "id": 579,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "13230:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 583,
                          "indexExpression": {
                            "baseExpression": {
                              "id": 580,
                              "name": "_mvoIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 525,
                              "src": "13238:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "string calldata[] calldata"
                              }
                            },
                            "id": 582,
                            "indexExpression": {
                              "id": 581,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 569,
                              "src": "13246:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13238:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13230:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13211:38:0"
                      },
                      {
                        "assignments": [
                          586
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 586,
                            "mutability": "mutable",
                            "name": "_stakeAddr",
                            "nameLocation": "13263:10:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 626,
                            "src": "13255:18:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 585,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13255:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 589,
                        "initialValue": {
                          "expression": {
                            "id": 587,
                            "name": "_mvo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 578,
                            "src": "13276:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                              "typeString": "struct MVOStaking.MVO storage pointer"
                            }
                          },
                          "id": 588,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "13281:14:0",
                          "memberName": "stakingAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 48,
                          "src": "13276:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13255:40:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 590,
                            "name": "_stakeAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 586,
                            "src": "13412:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13434:1:0",
                                "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": 592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13426:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 591,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13426:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13426:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13412:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "documentation": "@dev we do not check _mvo.active to allow import of points accrued elsewhere prior to deactivation",
                        "id": 599,
                        "nodeType": "IfStatement",
                        "src": "13408:51:0",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 596,
                              "name": "NotActiveMVO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 308,
                              "src": "13445:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13445:14:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 598,
                          "nodeType": "RevertStatement",
                          "src": "13438:21:0"
                        }
                      },
                      {
                        "id": 625,
                        "nodeType": "UncheckedBlock",
                        "src": "13465:270:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 600,
                                  "name": "pointsBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 152,
                                  "src": "13588:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 602,
                                "indexExpression": {
                                  "id": 601,
                                  "name": "_stakeAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 586,
                                  "src": "13602:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "13588:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 603,
                                  "name": "_points",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 528,
                                  "src": "13617:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 605,
                                "indexExpression": {
                                  "id": 604,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 569,
                                  "src": "13625:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13617:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13588:39:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 607,
                            "nodeType": "ExpressionStatement",
                            "src": "13588:39:0"
                          },
                          {
                            "expression": {
                              "id": 612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 608,
                                "name": "totalPoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 134,
                                "src": "13634:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "baseExpression": {
                                  "id": 609,
                                  "name": "_points",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 528,
                                  "src": "13649:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 611,
                                "indexExpression": {
                                  "id": 610,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 569,
                                  "src": "13657:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13649:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13634:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 613,
                            "nodeType": "ExpressionStatement",
                            "src": "13634:25:0"
                          },
                          {
                            "eventCall": {
                              "arguments": [
                                {
                                  "id": 615,
                                  "name": "_stakeAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 586,
                                  "src": "13685:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 616,
                                    "name": "_points",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 528,
                                    "src": "13697:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 618,
                                  "indexExpression": {
                                    "id": 617,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 569,
                                    "src": "13705:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13697:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 619,
                                  "name": "_chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 522,
                                  "src": "13709:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 614,
                                "name": "PointsAwarded",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 245,
                                "src": "13671:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256,uint256)"
                                }
                              },
                              "id": 620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13671:47:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 621,
                            "nodeType": "EmitStatement",
                            "src": "13666:52:0"
                          },
                          {
                            "expression": {
                              "id": 623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "13725:3:0",
                              "subExpression": {
                                "id": 622,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 569,
                                "src": "13727:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 624,
                            "nodeType": "ExpressionStatement",
                            "src": "13725:3:0"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 572,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 569,
                      "src": "13177:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 573,
                        "name": "_mvoIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 525,
                        "src": "13181:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[] calldata"
                        }
                      },
                      "id": 574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13189:6:0",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "13181:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13177:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 627,
                  "initializationExpression": {
                    "assignments": [
                      569
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 569,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "13170:1:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 627,
                        "src": "13162:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 568,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13162:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 571,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13174:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13162:13:0"
                  },
                  "isSimpleCounterLoop": false,
                  "nodeType": "ForStatement",
                  "src": "13157:583:0"
                }
              ]
            },
            "documentation": {
              "id": 520,
              "nodeType": "StructuredDocumentation",
              "src": "12262:398:0",
              "text": "@notice this method is only relevant on Eth mainnet, callable by bot\n @dev used to migrate points earned by MVOs on other chains to mainnet where staking and point claims actually take place\n @param _chainId: the chain the bot is importing the points from\n @param _mvoIDs: IDs of MVOs for which points are being imported\n @param _points: number of points for each listed MVO"
            },
            "functionSelector": "52cc854a",
            "id": 629,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 531,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 530,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "12780:12:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1994,
                  "src": "12780:12:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "12780:12:0"
              }
            ],
            "name": "importPoints",
            "nameLocation": "12672:12:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 522,
                  "mutability": "mutable",
                  "name": "_chainId",
                  "nameLocation": "12697:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 629,
                  "src": "12689:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 521,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12689:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 525,
                  "mutability": "mutable",
                  "name": "_mvoIDs",
                  "nameLocation": "12728:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 629,
                  "src": "12710:25:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 523,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "12710:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 524,
                    "nodeType": "ArrayTypeName",
                    "src": "12710:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 528,
                  "mutability": "mutable",
                  "name": "_points",
                  "nameLocation": "12759:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 629,
                  "src": "12740:26:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 526,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12740:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 527,
                    "nodeType": "ArrayTypeName",
                    "src": "12740:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12684:86:0"
            },
            "returnParameters": {
              "id": 532,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12793:0:0"
            },
            "scope": 1967,
            "src": "12663:1081:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 671,
              "nodeType": "Block",
              "src": "14603:552:0",
              "statements": [
                {
                  "assignments": [
                    640
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 640,
                      "mutability": "mutable",
                      "name": "_stakingAddr",
                      "nameLocation": "14622:12:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 671,
                      "src": "14614:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 639,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14614:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 645,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 641,
                        "name": "idToMVO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 163,
                        "src": "14637:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                          "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                        }
                      },
                      "id": 643,
                      "indexExpression": {
                        "id": 642,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 632,
                        "src": "14645:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "14637:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVO_$61_storage",
                        "typeString": "struct MVOStaking.MVO storage ref"
                      }
                    },
                    "id": 644,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14653:14:0",
                    "memberName": "stakingAddress",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 48,
                    "src": "14637:30:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14614:53:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 646,
                        "name": "pointsBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 152,
                        "src": "14682:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 648,
                      "indexExpression": {
                        "id": 647,
                        "name": "_stakingAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 640,
                        "src": "14696:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "14682:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 649,
                      "name": "_points",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 634,
                      "src": "14712:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14682:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 654,
                  "nodeType": "IfStatement",
                  "src": "14678:88:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 651,
                        "name": "AmountLargerThanBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 286,
                        "src": "14741:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 652,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14741:25:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 653,
                    "nodeType": "RevertStatement",
                    "src": "14734:32:0"
                  }
                },
                {
                  "id": 665,
                  "nodeType": "UncheckedBlock",
                  "src": "14982:112:0",
                  "statements": [
                    {
                      "expression": {
                        "id": 659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 655,
                            "name": "pointsBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 152,
                            "src": "15007:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 657,
                          "indexExpression": {
                            "id": 656,
                            "name": "_stakingAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 640,
                            "src": "15021:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "15007:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "id": 658,
                          "name": "_points",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "15038:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "15007:38:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 660,
                      "nodeType": "ExpressionStatement",
                      "src": "15007:38:0"
                    },
                    {
                      "expression": {
                        "id": 663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 661,
                          "name": "totalPoints",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 134,
                          "src": "15060:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "id": 662,
                          "name": "_points",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 634,
                          "src": "15075:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "15060:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 664,
                      "nodeType": "ExpressionStatement",
                      "src": "15060:22:0"
                    }
                  ]
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 667,
                        "name": "_stakingAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 640,
                        "src": "15125:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 668,
                        "name": "_points",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 634,
                        "src": "15139:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 666,
                      "name": "PointsReduced",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 255,
                      "src": "15111:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15111:36:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 670,
                  "nodeType": "EmitStatement",
                  "src": "15106:41:0"
                }
              ]
            },
            "documentation": {
              "id": 630,
              "nodeType": "StructuredDocumentation",
              "src": "14332:158:0",
              "text": "@param _mvoID: ID of MVO whose points are being reduced\n @param _points: amount of points being subtracted from the relevant MVO's 'pointsBalance'"
            },
            "functionSelector": "45ed3db1",
            "id": 672,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 637,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 636,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "14593:9:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 284,
                  "src": "14593:9:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "14593:9:0"
              }
            ],
            "name": "reducePoints",
            "nameLocation": "14505:12:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 632,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "14544:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 672,
                  "src": "14528:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 631,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14528:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 634,
                  "mutability": "mutable",
                  "name": "_points",
                  "nameLocation": "14569:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 672,
                  "src": "14561:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 633,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14561:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14517:66:0"
            },
            "returnParameters": {
              "id": 638,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14603:0:0"
            },
            "scope": 1967,
            "src": "14496:659:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 878,
              "nodeType": "Block",
              "src": "15753:3033:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 680,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "15768:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15772:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "15768:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 682,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "15782:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 684,
                        "indexExpression": {
                          "id": 683,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 675,
                          "src": "15790:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15782:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 685,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15798:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "15782:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "15768:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 690,
                  "nodeType": "IfStatement",
                  "src": "15764:94:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 687,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "15834:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15834:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 689,
                    "nodeType": "RevertStatement",
                    "src": "15827:31:0"
                  }
                },
                {
                  "assignments": [
                    692
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 692,
                      "mutability": "mutable",
                      "name": "_poolId",
                      "nameLocation": "15935:7:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 878,
                      "src": "15927:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 691,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15927:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 697,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 693,
                        "name": "idToMVO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 163,
                        "src": "15945:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                          "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                        }
                      },
                      "id": 695,
                      "indexExpression": {
                        "id": 694,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 675,
                        "src": "15953:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "15945:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVO_$61_storage",
                        "typeString": "struct MVOStaking.MVO storage ref"
                      }
                    },
                    "id": 696,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15961:12:0",
                    "memberName": "memberPoolId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 56,
                    "src": "15945:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15927:46:0"
                },
                {
                  "assignments": [
                    699
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 699,
                      "mutability": "mutable",
                      "name": "_pointsAccrued",
                      "nameLocation": "15992:14:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 878,
                      "src": "15984:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 698,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15984:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 704,
                  "initialValue": {
                    "baseExpression": {
                      "id": 700,
                      "name": "pointsBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 152,
                      "src": "16009:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 703,
                    "indexExpression": {
                      "expression": {
                        "id": 701,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "16023:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16027:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "16023:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16009:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15984:50:0"
                },
                {
                  "assignments": [
                    706
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 706,
                      "mutability": "mutable",
                      "name": "_index",
                      "nameLocation": "16053:6:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 878,
                      "src": "16045:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 705,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16045:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 707,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16045:14:0"
                },
                {
                  "assignments": [
                    709
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 709,
                      "mutability": "mutable",
                      "name": "_blockDiff",
                      "nameLocation": "16078:10:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 878,
                      "src": "16070:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 708,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16070:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 714,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 710,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "16091:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16097:6:0",
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "src": "16091:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 712,
                      "name": "genesisBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 105,
                      "src": "16106:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16091:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16070:48:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 715,
                      "name": "_blockDiff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 709,
                      "src": "16207:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 716,
                        "name": "BLOCKS_PER_YEAR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 95,
                        "src": "16220:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "hexValue": "35",
                        "id": 717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16238:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      },
                      "src": "16220:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16207:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 723,
                        "name": "_blockDiff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 709,
                        "src": "16287:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "id": 724,
                        "name": "BLOCKS_PER_YEAR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 95,
                        "src": "16301:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16287:29:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 730,
                            "name": "_blockDiff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 709,
                            "src": "16362:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 731,
                            "name": "BLOCKS_PER_YEAR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 95,
                            "src": "16375:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16362:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 733,
                            "name": "_blockDiff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 709,
                            "src": "16394:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 734,
                              "name": "BLOCKS_PER_YEAR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 95,
                              "src": "16408:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16426:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "16408:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16394:33:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "16362:65:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 743,
                              "name": "_blockDiff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 709,
                              "src": "16483:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 744,
                                "name": "BLOCKS_PER_YEAR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 95,
                                "src": "16496:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16514:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "16496:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16483:32:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 748,
                              "name": "_blockDiff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 709,
                              "src": "16532:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 749,
                                "name": "BLOCKS_PER_YEAR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 95,
                                "src": "16546:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "hexValue": "33",
                                "id": 750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16564:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "src": "16546:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16532:33:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16483:82:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 758,
                                "name": "_blockDiff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 709,
                                "src": "16621:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 759,
                                  "name": "BLOCKS_PER_YEAR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 95,
                                  "src": "16634:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "33",
                                  "id": 760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16652:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3_by_1",
                                    "typeString": "int_const 3"
                                  },
                                  "value": "3"
                                },
                                "src": "16634:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16621:32:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 763,
                                "name": "_blockDiff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 709,
                                "src": "16670:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 764,
                                  "name": "BLOCKS_PER_YEAR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 95,
                                  "src": "16684:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "34",
                                  "id": 765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16702:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "16684:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16670:33:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "16621:82:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 773,
                                  "name": "_blockDiff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 709,
                                  "src": "16759:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 774,
                                    "name": "BLOCKS_PER_YEAR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 95,
                                    "src": "16772:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "34",
                                    "id": 775,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16790:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "src": "16772:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16759:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 778,
                                  "name": "_blockDiff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 709,
                                  "src": "16808:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 779,
                                    "name": "BLOCKS_PER_YEAR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 95,
                                    "src": "16822:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "35",
                                    "id": 780,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16840:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_5_by_1",
                                      "typeString": "int_const 5"
                                    },
                                    "value": "5"
                                  },
                                  "src": "16822:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16808:33:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "16759:82:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 788,
                            "nodeType": "IfStatement",
                            "src": "16741:122:0",
                            "trueBody": {
                              "expression": {
                                "id": 786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 784,
                                  "name": "_index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 706,
                                  "src": "16853:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "35",
                                  "id": 785,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16862:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_5_by_1",
                                    "typeString": "int_const 5"
                                  },
                                  "value": "5"
                                },
                                "src": "16853:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 787,
                              "nodeType": "ExpressionStatement",
                              "src": "16853:10:0"
                            }
                          },
                          "id": 789,
                          "nodeType": "IfStatement",
                          "src": "16603:260:0",
                          "trueBody": {
                            "expression": {
                              "id": 771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 769,
                                "name": "_index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 706,
                                "src": "16715:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "hexValue": "34",
                                "id": 770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16724:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "16715:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 772,
                            "nodeType": "ExpressionStatement",
                            "src": "16715:10:0"
                          }
                        },
                        "id": 790,
                        "nodeType": "IfStatement",
                        "src": "16465:398:0",
                        "trueBody": {
                          "expression": {
                            "id": 756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 754,
                              "name": "_index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 706,
                              "src": "16577:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "hexValue": "33",
                              "id": 755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16586:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "src": "16577:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 757,
                          "nodeType": "ExpressionStatement",
                          "src": "16577:10:0"
                        }
                      },
                      "id": 791,
                      "nodeType": "IfStatement",
                      "src": "16344:519:0",
                      "trueBody": {
                        "expression": {
                          "id": 741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 739,
                            "name": "_index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 706,
                            "src": "16439:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 740,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16448:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "16439:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 742,
                        "nodeType": "ExpressionStatement",
                        "src": "16439:10:0"
                      }
                    },
                    "id": 792,
                    "nodeType": "IfStatement",
                    "src": "16283:580:0",
                    "trueBody": {
                      "expression": {
                        "id": 728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 726,
                          "name": "_index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 706,
                          "src": "16318:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16327:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "16318:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 729,
                      "nodeType": "ExpressionStatement",
                      "src": "16318:10:0"
                    }
                  },
                  "id": 793,
                  "nodeType": "IfStatement",
                  "src": "16203:660:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 720,
                        "name": "MintPeriodExpired",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 306,
                        "src": "16248:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 721,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16248:19:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 722,
                    "nodeType": "RevertStatement",
                    "src": "16241:26:0"
                  }
                },
                {
                  "assignments": [
                    795
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 795,
                      "mutability": "mutable",
                      "name": "_availableToMint",
                      "nameLocation": "17409:16:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 878,
                      "src": "17401:24:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 794,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17401:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 807,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 796,
                              "name": "yearToTokensRemaining",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 168,
                              "src": "17429:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 798,
                            "indexExpression": {
                              "id": 797,
                              "name": "_index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 706,
                              "src": "17451:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17429:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 799,
                            "name": "_blockDiff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 709,
                            "src": "17474:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17429:55:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 801,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17428:57:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 802,
                            "name": "BLOCKS_PER_YEAR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 95,
                            "src": "17489:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 803,
                            "name": "_index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 706,
                            "src": "17507:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17489:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 805,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17488:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17428:86:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17401:113:0"
                },
                {
                  "assignments": [
                    809
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 809,
                      "mutability": "mutable",
                      "name": "_earnedTokens",
                      "nameLocation": "17696:13:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 878,
                      "src": "17688:21:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 808,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17688:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 816,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 815,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 810,
                            "name": "_pointsAccrued",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 699,
                            "src": "17713:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 811,
                            "name": "_availableToMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 795,
                            "src": "17730:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17713:33:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 813,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17712:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 814,
                      "name": "totalPoints",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 134,
                      "src": "17763:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17712:62:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17688:86:0"
                },
                {
                  "expression": {
                    "id": 819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 817,
                      "name": "totalPoints",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 134,
                      "src": "17936:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "id": 818,
                      "name": "_pointsAccrued",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 699,
                      "src": "17951:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17936:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 820,
                  "nodeType": "ExpressionStatement",
                  "src": "17936:29:0"
                },
                {
                  "expression": {
                    "id": 825,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "17976:32:0",
                    "subExpression": {
                      "baseExpression": {
                        "id": 821,
                        "name": "pointsBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 152,
                        "src": "17983:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 824,
                      "indexExpression": {
                        "expression": {
                          "id": 822,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "17997:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 823,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "18001:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "17997:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "17983:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 826,
                  "nodeType": "ExpressionStatement",
                  "src": "17976:32:0"
                },
                {
                  "expression": {
                    "id": 831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 827,
                        "name": "yearToTokensRemaining",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 168,
                        "src": "18219:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 829,
                      "indexExpression": {
                        "id": 828,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 706,
                        "src": "18241:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18219:29:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "id": 830,
                      "name": "_earnedTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 809,
                      "src": "18252:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18219:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 832,
                  "nodeType": "ExpressionStatement",
                  "src": "18219:46:0"
                },
                {
                  "assignments": [
                    834
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 834,
                      "mutability": "mutable",
                      "name": "_dues",
                      "nameLocation": "18443:5:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 878,
                      "src": "18435:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 833,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18435:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 847,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 835,
                            "name": "_earnedTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 809,
                            "src": "18452:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "baseExpression": {
                                    "id": 838,
                                    "name": "idToMVOPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 174,
                                    "src": "18476:11:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                                      "typeString": "mapping(uint256 => struct MVOStaking.MVOPool storage ref)"
                                    }
                                  },
                                  "id": 840,
                                  "indexExpression": {
                                    "id": 839,
                                    "name": "_poolId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 692,
                                    "src": "18488:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18476:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                                    "typeString": "struct MVOStaking.MVOPool storage ref"
                                  }
                                },
                                "id": 841,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "18497:4:0",
                                "memberName": "dues",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 66,
                                "src": "18476:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              ],
                              "id": 837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18468:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 836,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18468:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18468:34:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18452:50:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 844,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "18451:52:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 845,
                      "name": "DECIMALS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 99,
                      "src": "18519:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18451:76:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18435:92:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 851,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "18585:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 852,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "18589:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "18585:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 855,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 853,
                          "name": "_earnedTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 809,
                          "src": "18597:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "id": 854,
                          "name": "_dues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 834,
                          "src": "18613:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18597:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 848,
                        "name": "iEnshroudToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "18565:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
                          "typeString": "contract IERC20Permit_MVOStaking"
                        }
                      },
                      "id": 850,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "18580:4:0",
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12,
                      "src": "18565:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18565:54:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 857,
                  "nodeType": "ExpressionStatement",
                  "src": "18565:54:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 858,
                      "name": "_dues",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 834,
                      "src": "18634:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 859,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18643:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18634:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 871,
                  "nodeType": "IfStatement",
                  "src": "18630:89:0",
                  "trueBody": {
                    "expression": {
                      "arguments": [
                        {
                          "expression": {
                            "baseExpression": {
                              "id": 864,
                              "name": "idToMVOPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 174,
                              "src": "18679:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                                "typeString": "mapping(uint256 => struct MVOStaking.MVOPool storage ref)"
                              }
                            },
                            "id": 866,
                            "indexExpression": {
                              "id": 865,
                              "name": "_poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 692,
                              "src": "18691:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18679:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                              "typeString": "struct MVOStaking.MVOPool storage ref"
                            }
                          },
                          "id": 867,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "18700:11:0",
                          "memberName": "poolAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 64,
                          "src": "18679:32:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "id": 868,
                          "name": "_dues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 834,
                          "src": "18713:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 861,
                          "name": "iEnshroudToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 109,
                          "src": "18659:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
                            "typeString": "contract IERC20Permit_MVOStaking"
                          }
                        },
                        "id": 863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "18674:4:0",
                        "memberName": "mint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12,
                        "src": "18659:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256) external"
                        }
                      },
                      "id": 869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18659:60:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 870,
                    "nodeType": "ExpressionStatement",
                    "src": "18659:60:0"
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 873,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "18751:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "18755:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "18751:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 875,
                        "name": "_pointsAccrued",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "18763:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 872,
                      "name": "PointsReduced",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 255,
                      "src": "18737:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 876,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18737:41:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 877,
                  "nodeType": "EmitStatement",
                  "src": "18732:46:0"
                }
              ]
            },
            "documentation": {
              "id": 673,
              "nodeType": "StructuredDocumentation",
              "src": "15163:523:0",
              "text": "@notice for an MVO to claim their mint reward. Amount of reward is based on the ratio of msg.sender's 'pointsBalance[]' compared to 'totalPoints' at the time of claim, minus any pool dues\n @dev entire 'pointsBalance' of msg.sender is redeemed - claiming a partial balance is not supported for efficiency as it is generally more advantageous to claim as soon as possible\n @dev claimable mint amount updates linearly by block.number within each applicable year\n @param _mvoID: MVO ID of msg.sender"
            },
            "functionSelector": "f3fe12c9",
            "id": 879,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 678,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 677,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "15740:12:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1994,
                  "src": "15740:12:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "15740:12:0"
              }
            ],
            "name": "claim",
            "nameLocation": "15701:5:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 675,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "15723:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 879,
                  "src": "15707:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 674,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15707:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15706:24:0"
            },
            "returnParameters": {
              "id": 679,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15753:0:0"
            },
            "scope": 1967,
            "src": "15692:3094:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 939,
              "nodeType": "Block",
              "src": "19174:419:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 889,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "19189:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "19193:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "19189:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 891,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "19203:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 893,
                        "indexExpression": {
                          "id": 892,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 882,
                          "src": "19211:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19203:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 894,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "19219:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "19203:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "19189:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 899,
                  "nodeType": "IfStatement",
                  "src": "19185:94:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 896,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "19255:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19255:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 898,
                    "nodeType": "RevertStatement",
                    "src": "19248:31:0"
                  }
                },
                {
                  "expression": {
                    "id": 902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 900,
                      "name": "totalStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 131,
                      "src": "19292:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 901,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 884,
                      "src": "19306:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19292:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 903,
                  "nodeType": "ExpressionStatement",
                  "src": "19292:21:0"
                },
                {
                  "expression": {
                    "id": 909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 904,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "19324:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 906,
                        "indexExpression": {
                          "id": 905,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 882,
                          "src": "19332:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19324:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 907,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "19340:14:0",
                      "memberName": "stakingQuantum",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 54,
                      "src": "19324:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 908,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 884,
                      "src": "19358:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19324:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 910,
                  "nodeType": "ExpressionStatement",
                  "src": "19324:41:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 914,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "19409:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19413:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "19409:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 918,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "19429:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          ],
                          "id": 917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "19421:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 916,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "19421:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19421:13:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 920,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 884,
                        "src": "19436:7:0",
                        "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": 911,
                        "name": "enshroudToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 102,
                        "src": "19378:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "19392:16:0",
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2058,
                      "src": "19378:30:0",
                      "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": 921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19378:66:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 922,
                  "nodeType": "ExpressionStatement",
                  "src": "19378:66:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 924,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "19480:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19484:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "19480:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 926,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 884,
                        "src": "19492:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 927,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "19501:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19507:6:0",
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "src": "19501:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 923,
                      "name": "MVOStaking_Staked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 220,
                      "src": "19462:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19462:52:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 930,
                  "nodeType": "EmitStatement",
                  "src": "19457:57:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 932,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 882,
                        "src": "19546:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 933,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "19554:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 935,
                          "indexExpression": {
                            "id": 934,
                            "name": "_mvoID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 882,
                            "src": "19562:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19554:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "id": 936,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19570:14:0",
                        "memberName": "stakingQuantum",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 54,
                        "src": "19554:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 931,
                      "name": "MVOStakeUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 208,
                      "src": "19530:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256)"
                      }
                    },
                    "id": 937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19530:55:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 938,
                  "nodeType": "EmitStatement",
                  "src": "19525:60:0"
                }
              ]
            },
            "documentation": {
              "id": 880,
              "nodeType": "StructuredDocumentation",
              "src": "18794:271:0",
              "text": "@notice for an MVO to stake their tokens; must first approve address(this) for '_amount'\n @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\n @param _mvoID: MVO ID of msg.sender\n @param _amount: amount to be staked"
            },
            "functionSelector": "9494c8ae",
            "id": 940,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 887,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 886,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "19161:12:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1994,
                  "src": "19161:12:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "19161:12:0"
              }
            ],
            "name": "stake",
            "nameLocation": "19080:5:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 882,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "19112:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 940,
                  "src": "19096:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 881,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19096:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 884,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "19137:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 940,
                  "src": "19129:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 883,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19129:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19085:66:0"
            },
            "returnParameters": {
              "id": 888,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19174:0:0"
            },
            "scope": 1967,
            "src": "19071:522:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1024,
              "nodeType": "Block",
              "src": "20227:611:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 958,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "20242:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 959,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "20246:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "20242:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 960,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "20256:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 962,
                        "indexExpression": {
                          "id": 961,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 943,
                          "src": "20264:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20256:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 963,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "20272:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "20256:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "20242:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 968,
                  "nodeType": "IfStatement",
                  "src": "20238:94:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 965,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "20308:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20308:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 967,
                    "nodeType": "RevertStatement",
                    "src": "20301:31:0"
                  }
                },
                {
                  "expression": {
                    "id": 971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 969,
                      "name": "totalStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 131,
                      "src": "20345:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 970,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 945,
                      "src": "20359:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20345:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 972,
                  "nodeType": "ExpressionStatement",
                  "src": "20345:21:0"
                },
                {
                  "expression": {
                    "id": 978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 973,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "20377:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 975,
                        "indexExpression": {
                          "id": 974,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 943,
                          "src": "20385:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20377:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 976,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "20393:14:0",
                      "memberName": "stakingQuantum",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 54,
                      "src": "20377:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 977,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 945,
                      "src": "20411:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20377:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 979,
                  "nodeType": "ExpressionStatement",
                  "src": "20377:41:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 983,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "20467:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 984,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20471:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "20467:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 987,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "20500:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          ],
                          "id": 986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "20492:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 985,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "20492:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20492:13:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 989,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "20520:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 990,
                        "name": "_deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 947,
                        "src": "20542:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 991,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 949,
                        "src": "20566:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 992,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 951,
                        "src": "20582:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 993,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 953,
                        "src": "20598:1:0",
                        "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": {
                        "id": 980,
                        "name": "iEnshroudToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "20431:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Permit_MVOStaking_$30",
                          "typeString": "contract IERC20Permit_MVOStaking"
                        }
                      },
                      "id": 982,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "20446:6:0",
                      "memberName": "permit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29,
                      "src": "20431:21:0",
                      "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": 994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20431:179:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 995,
                  "nodeType": "ExpressionStatement",
                  "src": "20431:179:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 999,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "20654:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20658:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "20654:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 1003,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "20674:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          ],
                          "id": 1002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "20666:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1001,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "20666:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1004,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20666:13:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1005,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "20681:7:0",
                        "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": 996,
                        "name": "enshroudToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 102,
                        "src": "20623:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "20637:16:0",
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2058,
                      "src": "20623:30:0",
                      "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": 1006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20623:66:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1007,
                  "nodeType": "ExpressionStatement",
                  "src": "20623:66:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1009,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "20725:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20729:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "20725:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1011,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "20737:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 1012,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "20746:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20752:6:0",
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "src": "20746:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1008,
                      "name": "MVOStaking_Staked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 220,
                      "src": "20707:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 1014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20707:52:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1015,
                  "nodeType": "EmitStatement",
                  "src": "20702:57:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1017,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 943,
                        "src": "20791:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1018,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "20799:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 1020,
                          "indexExpression": {
                            "id": 1019,
                            "name": "_mvoID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 943,
                            "src": "20807:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20799:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "id": 1021,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20815:14:0",
                        "memberName": "stakingQuantum",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 54,
                        "src": "20799:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1016,
                      "name": "MVOStakeUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 208,
                      "src": "20775:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256)"
                      }
                    },
                    "id": 1022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20775:55:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1023,
                  "nodeType": "EmitStatement",
                  "src": "20770:60:0"
                }
              ]
            },
            "documentation": {
              "id": 941,
              "nodeType": "StructuredDocumentation",
              "src": "19601:427:0",
              "text": "@notice for an MVO to stake their tokens in this address using permit()\n @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\n @param _mvoID: MVO ID of msg.sender\n @param _amount: amount to be staked\n @param _deadline: block limit by which permit must be used\n @param v - ECDSA sig param\n @param r - ECDSA sig param\n @param s - ECDSA sig param"
            },
            "functionSelector": "18aed3c7",
            "id": 1025,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 956,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 955,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "20214:12:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1994,
                  "src": "20214:12:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "20214:12:0"
              }
            ],
            "name": "stakeWithPermit",
            "nameLocation": "20043:15:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 943,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "20085:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1025,
                  "src": "20069:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 942,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "20069:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 945,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "20110:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1025,
                  "src": "20102:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 944,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20102:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 947,
                  "mutability": "mutable",
                  "name": "_deadline",
                  "nameLocation": "20130:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1025,
                  "src": "20122:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 946,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20122:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 949,
                  "mutability": "mutable",
                  "name": "v",
                  "nameLocation": "20156:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1025,
                  "src": "20150:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 948,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "20150:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 951,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "20176:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1025,
                  "src": "20168:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 950,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20168:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 953,
                  "mutability": "mutable",
                  "name": "s",
                  "nameLocation": "20196:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1025,
                  "src": "20188:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 952,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20188:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20058:146:0"
            },
            "returnParameters": {
              "id": 957,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20227:0:0"
            },
            "scope": 1967,
            "src": "20034:804:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1129,
              "nodeType": "Block",
              "src": "22067:981:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 1039,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "22082:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1040,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "22086:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "22082:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 1041,
                      "name": "timelockManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 112,
                      "src": "22096:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "22082:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1046,
                  "nodeType": "IfStatement",
                  "src": "22078:63:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1043,
                        "name": "OnlyTimelockManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 316,
                        "src": "22120:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22120:21:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1045,
                    "nodeType": "RevertStatement",
                    "src": "22113:28:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1047,
                      "name": "_staker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1032,
                      "src": "22156:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1048,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "22167:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1050,
                        "indexExpression": {
                          "id": 1049,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1028,
                          "src": "22175:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "22167:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1051,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "22183:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "22167:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "22156:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1056,
                  "nodeType": "IfStatement",
                  "src": "22152:91:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1053,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "22219:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1054,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "22219:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1055,
                    "nodeType": "RevertStatement",
                    "src": "22212:31:0"
                  }
                },
                {
                  "expression": {
                    "id": 1059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1057,
                      "name": "totalStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 131,
                      "src": "22256:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 1058,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1030,
                      "src": "22270:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22256:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1060,
                  "nodeType": "ExpressionStatement",
                  "src": "22256:21:0"
                },
                {
                  "expression": {
                    "id": 1066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 1061,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "22288:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1063,
                        "indexExpression": {
                          "id": 1062,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1028,
                          "src": "22296:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "22288:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1064,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "22304:14:0",
                      "memberName": "stakingQuantum",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 54,
                      "src": "22288:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 1065,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1030,
                      "src": "22322:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22288:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1067,
                  "nodeType": "ExpressionStatement",
                  "src": "22288:41:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1068,
                          "name": "timelocks",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 180,
                          "src": "22399:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                            "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                          }
                        },
                        "id": 1070,
                        "indexExpression": {
                          "id": 1069,
                          "name": "_staker",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1032,
                          "src": "22409:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "22399:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Timelock_$91_storage",
                          "typeString": "struct MVOStaking.Timelock storage ref"
                        }
                      },
                      "id": 1071,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "22418:15:0",
                      "memberName": "remainingAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 86,
                      "src": "22399:34:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22437:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "22399:39:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1100,
                    "nodeType": "Block",
                    "src": "22626:198:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 1098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1089,
                              "name": "timelocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 180,
                              "src": "22659:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                                "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                              }
                            },
                            "id": 1091,
                            "indexExpression": {
                              "id": 1090,
                              "name": "_staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1032,
                              "src": "22669:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22659:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Timelock_$91_storage",
                              "typeString": "struct MVOStaking.Timelock storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 1093,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1030,
                                "src": "22709:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1094,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1030,
                                "src": "22740:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1095,
                                "name": "_releaseStart",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1034,
                                "src": "22768:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "id": 1096,
                                "name": "_releaseEnd",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1036,
                                "src": "22800:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 1092,
                              "name": "Timelock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 91,
                              "src": "22680:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Timelock_$91_storage_ptr_$",
                                "typeString": "type(struct MVOStaking.Timelock storage pointer)"
                              }
                            },
                            "id": 1097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "nameLocations": [
                              "22696:11:0",
                              "22723:15:0",
                              "22754:12:0",
                              "22788:10:0"
                            ],
                            "names": [
                              "totalAmount",
                              "remainingAmount",
                              "releaseStart",
                              "releaseEnd"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "22680:138:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Timelock_$91_memory_ptr",
                              "typeString": "struct MVOStaking.Timelock memory"
                            }
                          },
                          "src": "22659:159:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Timelock_$91_storage",
                            "typeString": "struct MVOStaking.Timelock storage ref"
                          }
                        },
                        "id": 1099,
                        "nodeType": "ExpressionStatement",
                        "src": "22659:159:0"
                      }
                    ]
                  },
                  "id": 1101,
                  "nodeType": "IfStatement",
                  "src": "22395:429:0",
                  "trueBody": {
                    "id": 1088,
                    "nodeType": "Block",
                    "src": "22440:180:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 1079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1074,
                                "name": "timelocks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 180,
                                "src": "22516:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                                  "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                                }
                              },
                              "id": 1076,
                              "indexExpression": {
                                "id": 1075,
                                "name": "_staker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1032,
                                "src": "22526:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22516:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Timelock_$91_storage",
                                "typeString": "struct MVOStaking.Timelock storage ref"
                              }
                            },
                            "id": 1077,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22535:11:0",
                            "memberName": "totalAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 84,
                            "src": "22516:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 1078,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1030,
                            "src": "22550:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22516:41:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1080,
                        "nodeType": "ExpressionStatement",
                        "src": "22516:41:0"
                      },
                      {
                        "expression": {
                          "id": 1086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1081,
                                "name": "timelocks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 180,
                                "src": "22563:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                                  "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                                }
                              },
                              "id": 1083,
                              "indexExpression": {
                                "id": 1082,
                                "name": "_staker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1032,
                                "src": "22573:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22563:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Timelock_$91_storage",
                                "typeString": "struct MVOStaking.Timelock storage ref"
                              }
                            },
                            "id": 1084,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22582:15:0",
                            "memberName": "remainingAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 86,
                            "src": "22563:34:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 1085,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1030,
                            "src": "22601:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22563:45:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1087,
                        "nodeType": "ExpressionStatement",
                        "src": "22563:45:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1105,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "22867:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22871:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "22867:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 1109,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "22887:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MVOStaking_$1967",
                              "typeString": "contract MVOStaking"
                            }
                          ],
                          "id": 1108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "22879:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1107,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "22879:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22879:13:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1111,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1030,
                        "src": "22894:7:0",
                        "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": 1102,
                        "name": "enshroudToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 102,
                        "src": "22836:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1104,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "22850:16:0",
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2058,
                      "src": "22836:30:0",
                      "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": 1112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22836:66:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1113,
                  "nodeType": "ExpressionStatement",
                  "src": "22836:66:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1115,
                        "name": "_staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1032,
                        "src": "22938:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1116,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1030,
                        "src": "22947:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 1117,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "22956:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22962:6:0",
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "src": "22956:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1114,
                      "name": "MVOStaking_Staked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 220,
                      "src": "22920:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 1119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22920:49:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1120,
                  "nodeType": "EmitStatement",
                  "src": "22915:54:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1122,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1028,
                        "src": "23001:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1123,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "23009:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 1125,
                          "indexExpression": {
                            "id": 1124,
                            "name": "_mvoID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1028,
                            "src": "23017:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23009:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "id": 1126,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "23025:14:0",
                        "memberName": "stakingQuantum",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 54,
                        "src": "23009:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1121,
                      "name": "MVOStakeUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 208,
                      "src": "22985:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256)"
                      }
                    },
                    "id": 1127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22985:55:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1128,
                  "nodeType": "EmitStatement",
                  "src": "22980:60:0"
                }
              ]
            },
            "documentation": {
              "id": 1026,
              "nodeType": "StructuredDocumentation",
              "src": "20846:1029:0",
              "text": "@notice for the 'timelockManager' (by user calling 'withdrawTimelockToMVOStaking()' in TimelockManager contract) to stake $ENSHROUD tokens in this address on behalf of the timelock beneficiary ('_staker'), who is an MVO operator.\n @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for '_staker'\n @dev one timelock per '_staker' at a time, though a further amount may be added to 'timelocks[_staker]' if the MVO owner consolidates multiple timelocks.\n nonReentrant modifier unnecessary here as it is already present in 'withdrawTimelockToMVOStaking()' in TimelockManager contract, which is the only permitted caller of this function\n @param _mvoID: MVO ID of '_staker'\n @param _amount: amount to be staked\n @param _staker: address of timelock beneficiary corresponding to '_mvoID' that will call the initiating function in 'timelockManager'\n @param _releaseStart: starting block number of timelock\n @param _releaseEnd: ending block number of timelock"
            },
            "functionSelector": "cb85180c",
            "id": 1130,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stakeTimelock",
            "nameLocation": "21890:13:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1028,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "21930:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "21914:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1027,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21914:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1030,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "21955:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "21947:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1029,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21947:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1032,
                  "mutability": "mutable",
                  "name": "_staker",
                  "nameLocation": "21981:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "21973:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1031,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21973:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1034,
                  "mutability": "mutable",
                  "name": "_releaseStart",
                  "nameLocation": "22007:13:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "21999:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1033,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "21999:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1036,
                  "mutability": "mutable",
                  "name": "_releaseEnd",
                  "nameLocation": "22039:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "22031:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1035,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "22031:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21903:154:0"
            },
            "returnParameters": {
              "id": 1038,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22067:0:0"
            },
            "scope": 1967,
            "src": "21881:1167:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1264,
              "nodeType": "Block",
              "src": "23580:1876:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 1140,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "23595:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "23599:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "23595:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1142,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "23609:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1144,
                        "indexExpression": {
                          "id": 1143,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1133,
                          "src": "23617:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "23609:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1145,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "23625:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "23609:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "23595:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1150,
                  "nodeType": "IfStatement",
                  "src": "23591:94:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1147,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "23661:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23661:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1149,
                    "nodeType": "RevertStatement",
                    "src": "23654:31:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1151,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "23700:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1153,
                        "indexExpression": {
                          "id": 1152,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1133,
                          "src": "23708:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "23700:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1154,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "23716:14:0",
                      "memberName": "stakingQuantum",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 54,
                      "src": "23700:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 1155,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1135,
                      "src": "23733:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23700:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1160,
                  "nodeType": "IfStatement",
                  "src": "23696:89:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1157,
                        "name": "AmountLargerThanStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 288,
                        "src": "23762:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23762:23:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1159,
                    "nodeType": "RevertStatement",
                    "src": "23755:30:0"
                  }
                },
                {
                  "assignments": [
                    1162
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1162,
                      "mutability": "mutable",
                      "name": "_remaining",
                      "nameLocation": "23806:10:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1264,
                      "src": "23798:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1161,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23798:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1168,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 1163,
                        "name": "timelocks",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 180,
                        "src": "23819:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                          "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                        }
                      },
                      "id": 1166,
                      "indexExpression": {
                        "expression": {
                          "id": 1164,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "23829:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "23833:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "23829:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23819:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Timelock_$91_storage",
                        "typeString": "struct MVOStaking.Timelock storage ref"
                      }
                    },
                    "id": 1167,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "23841:15:0",
                    "memberName": "remainingAmount",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 86,
                    "src": "23819:37:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23798:58:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1169,
                      "name": "_remaining",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1162,
                      "src": "23865:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23879:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "23865:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1227,
                  "nodeType": "IfStatement",
                  "src": "23861:1042:0",
                  "trueBody": {
                    "id": 1226,
                    "nodeType": "Block",
                    "src": "23882:1021:0",
                    "statements": [
                      {
                        "assignments": [
                          1173
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1173,
                            "mutability": "mutable",
                            "name": "_unlockedAndWithdrawable",
                            "nameLocation": "24013:24:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 1226,
                            "src": "24005:32:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1172,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "24005:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1187,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1175,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "24053:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "24057:6:0",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "24053:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1174,
                              "name": "_getUnlocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1966,
                              "src": "24040:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view returns (uint256)"
                              }
                            },
                            "id": 1177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24040:24:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 1178,
                                      "name": "timelocks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 180,
                                      "src": "24073:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                                        "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                                      }
                                    },
                                    "id": 1181,
                                    "indexExpression": {
                                      "expression": {
                                        "id": 1179,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "24083:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 1180,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "24087:6:0",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "24083:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24073:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Timelock_$91_storage",
                                      "typeString": "struct MVOStaking.Timelock storage ref"
                                    }
                                  },
                                  "id": 1182,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "24095:11:0",
                                  "memberName": "totalAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 84,
                                  "src": "24073:33:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 1183,
                                  "name": "_remaining",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1162,
                                  "src": "24109:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24073:46:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1185,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "24072:48:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24040:80:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24005:115:0"
                      },
                      {
                        "assignments": [
                          1189
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1189,
                            "mutability": "mutable",
                            "name": "_neverLocked",
                            "nameLocation": "24270:12:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 1226,
                            "src": "24262:20:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1188,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "24262:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1196,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1190,
                                "name": "idToMVO",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 163,
                                "src": "24285:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                                  "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                                }
                              },
                              "id": 1192,
                              "indexExpression": {
                                "id": 1191,
                                "name": "_mvoID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1133,
                                "src": "24293:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24285:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MVO_$61_storage",
                                "typeString": "struct MVOStaking.MVO storage ref"
                              }
                            },
                            "id": 1193,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "24301:14:0",
                            "memberName": "stakingQuantum",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 54,
                            "src": "24285:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 1194,
                            "name": "_remaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1162,
                            "src": "24318:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24285:43:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24262:66:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1197,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1135,
                            "src": "24489:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1198,
                              "name": "_unlockedAndWithdrawable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1173,
                              "src": "24499:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 1199,
                              "name": "_neverLocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1189,
                              "src": "24526:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24499:39:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24489:49:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1205,
                        "nodeType": "IfStatement",
                        "src": "24485:97:0",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1202,
                              "name": "AmountLargerThanWithdrawable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 290,
                              "src": "24552:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 1203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24552:30:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 1204,
                          "nodeType": "RevertStatement",
                          "src": "24545:37:0"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1206,
                            "name": "_unlockedAndWithdrawable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1173,
                            "src": "24658:24:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 1207,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1135,
                            "src": "24686:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24658:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "id": 1223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "baseExpression": {
                                  "id": 1217,
                                  "name": "timelocks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 180,
                                  "src": "24764:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                                    "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                                  }
                                },
                                "id": 1220,
                                "indexExpression": {
                                  "expression": {
                                    "id": 1218,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "24774:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 1219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "24778:6:0",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "24774:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24764:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Timelock_$91_storage",
                                  "typeString": "struct MVOStaking.Timelock storage ref"
                                }
                              },
                              "id": 1221,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberLocation": "24786:15:0",
                              "memberName": "remainingAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 86,
                              "src": "24764:37:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "-=",
                            "rightHandSide": {
                              "id": 1222,
                              "name": "_unlockedAndWithdrawable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1173,
                              "src": "24805:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24764:65:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1224,
                          "nodeType": "ExpressionStatement",
                          "src": "24764:65:0"
                        },
                        "id": 1225,
                        "nodeType": "IfStatement",
                        "src": "24654:175:0",
                        "trueBody": {
                          "expression": {
                            "id": 1215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "expression": {
                                "baseExpression": {
                                  "id": 1209,
                                  "name": "timelocks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 180,
                                  "src": "24700:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                                    "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                                  }
                                },
                                "id": 1212,
                                "indexExpression": {
                                  "expression": {
                                    "id": 1210,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "24710:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 1211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "24714:6:0",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "24710:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "24700:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Timelock_$91_storage",
                                  "typeString": "struct MVOStaking.Timelock storage ref"
                                }
                              },
                              "id": 1213,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberLocation": "24722:15:0",
                              "memberName": "remainingAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 86,
                              "src": "24700:37:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "-=",
                            "rightHandSide": {
                              "id": 1214,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1135,
                              "src": "24741:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24700:48:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1216,
                          "nodeType": "ExpressionStatement",
                          "src": "24700:48:0"
                        }
                      }
                    ]
                  }
                },
                {
                  "id": 1239,
                  "nodeType": "UncheckedBlock",
                  "src": "24915:331:0",
                  "statements": [
                    {
                      "expression": {
                        "id": 1233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "expression": {
                            "baseExpression": {
                              "id": 1228,
                              "name": "idToMVO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 163,
                              "src": "25004:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                                "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                              }
                            },
                            "id": 1230,
                            "indexExpression": {
                              "id": 1229,
                              "name": "_mvoID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1133,
                              "src": "25012:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "25004:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MVO_$61_storage",
                              "typeString": "struct MVOStaking.MVO storage ref"
                            }
                          },
                          "id": 1231,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberLocation": "25020:14:0",
                          "memberName": "stakingQuantum",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 54,
                          "src": "25004:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "id": 1232,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1135,
                          "src": "25038:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25004:41:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1234,
                      "nodeType": "ExpressionStatement",
                      "src": "25004:41:0"
                    },
                    {
                      "expression": {
                        "id": 1237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 1235,
                          "name": "totalStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 131,
                          "src": "25213:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "id": 1236,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1135,
                          "src": "25227:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25213:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1238,
                      "nodeType": "ExpressionStatement",
                      "src": "25213:21:0"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1243,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "25285:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25289:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "25285:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1245,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "25297:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 1240,
                        "name": "enshroudToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 102,
                        "src": "25258:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25272:12:0",
                      "memberName": "safeTransfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2044,
                      "src": "25258:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_address_$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 1246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25258:47:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1247,
                  "nodeType": "ExpressionStatement",
                  "src": "25258:47:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1249,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "25343:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25347:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "25343:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1251,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "25355:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 1252,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "25364:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25370:6:0",
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "src": "25364:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1248,
                      "name": "MVOStaking_Unstaked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 228,
                      "src": "25323:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 1254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25323:54:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1255,
                  "nodeType": "EmitStatement",
                  "src": "25318:59:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1257,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1133,
                        "src": "25409:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1258,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "25417:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 1260,
                          "indexExpression": {
                            "id": 1259,
                            "name": "_mvoID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1133,
                            "src": "25425:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25417:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "id": 1261,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25433:14:0",
                        "memberName": "stakingQuantum",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 54,
                        "src": "25417:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1256,
                      "name": "MVOStakeUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 208,
                      "src": "25393:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,uint256)"
                      }
                    },
                    "id": 1262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25393:55:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1263,
                  "nodeType": "EmitStatement",
                  "src": "25388:60:0"
                }
              ]
            },
            "documentation": {
              "id": 1131,
              "nodeType": "StructuredDocumentation",
              "src": "23056:412:0",
              "text": "@notice for an MVO to withdraw its staked $ENSHROUD tokens\n @dev updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender\n @dev stake can only be withdrawn if msg.sender's '_mvoID' is correct; if msg.sender's MVO struct is maliciously altered by an admin, will need to be corrected\n @param _mvoID: MVO ID of msg.sender\n @param _amount: amount to be withdrawn"
            },
            "functionSelector": "30b39a62",
            "id": 1265,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1138,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1137,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "23567:12:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1994,
                  "src": "23567:12:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "23567:12:0"
              }
            ],
            "name": "withdraw",
            "nameLocation": "23483:8:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1133,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "23518:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1265,
                  "src": "23502:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23502:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1135,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "23543:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1265,
                  "src": "23535:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1134,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23535:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23491:66:0"
            },
            "returnParameters": {
              "id": 1139,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23580:0:0"
            },
            "scope": 1967,
            "src": "23474:1982:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1356,
              "nodeType": "Block",
              "src": "26228:1047:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 1275,
                        "name": "_miningPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "26257:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 1276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26274:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "26257:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1286,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "baseExpression": {
                            "id": 1278,
                            "name": "idToMVOPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 174,
                            "src": "26292:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                              "typeString": "mapping(uint256 => struct MVOStaking.MVOPool storage ref)"
                            }
                          },
                          "id": 1280,
                          "indexExpression": {
                            "id": 1279,
                            "name": "_miningPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1268,
                            "src": "26304:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "26292:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                            "typeString": "struct MVOStaking.MVOPool storage ref"
                          }
                        },
                        "id": 1281,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "26319:11:0",
                        "memberName": "poolAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 64,
                        "src": "26292:38:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 1284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26342:1:0",
                            "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": 1283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "26334:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1282,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "26334:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1285,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26334:10:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "26292:52:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "26257:87:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1291,
                  "nodeType": "IfStatement",
                  "src": "26239:140:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1288,
                        "name": "IDAlreadyInUse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 294,
                        "src": "26363:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "26363:16:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1290,
                    "nodeType": "RevertStatement",
                    "src": "26356:23:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1292,
                      "name": "_dues",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1270,
                      "src": "26510:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "35653137",
                      "id": 1293,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26519:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_500000000000000000_by_1",
                        "typeString": "int_const 500000000000000000"
                      },
                      "value": "5e17"
                    },
                    "src": "26510:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1298,
                  "nodeType": "IfStatement",
                  "src": "26506:40:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1295,
                        "name": "DuesTooLarge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 292,
                        "src": "26532:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1296,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "26532:14:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1297,
                    "nodeType": "RevertStatement",
                    "src": "26525:21:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 1299,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "26561:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1300,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "26565:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "26561:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1301,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "26575:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1303,
                        "indexExpression": {
                          "id": 1302,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1272,
                          "src": "26583:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "26575:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1304,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "26591:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "26575:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "26561:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1309,
                  "nodeType": "IfStatement",
                  "src": "26557:94:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1306,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "26627:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "26627:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1308,
                    "nodeType": "RevertStatement",
                    "src": "26620:31:0"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1311,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1272,
                        "src": "26752:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 1310,
                      "name": "checkMVO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1754,
                      "src": "26743:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_calldata_ptr_$returns$__$",
                        "typeString": "function (string calldata) view"
                      }
                    },
                    "id": 1312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26743:16:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1313,
                  "nodeType": "ExpressionStatement",
                  "src": "26743:16:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 1314,
                        "name": "pointsBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 152,
                        "src": "26827:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 1317,
                      "indexExpression": {
                        "expression": {
                          "id": 1315,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "26841:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "26845:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "26841:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "26827:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1318,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26855:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "26827:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1323,
                  "nodeType": "IfStatement",
                  "src": "26823:59:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1320,
                        "name": "UnclaimedPoints",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 320,
                        "src": "26865:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "26865:17:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1322,
                    "nodeType": "RevertStatement",
                    "src": "26858:24:0"
                  }
                },
                {
                  "expression": {
                    "id": 1338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 1324,
                        "name": "idToMVOPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 174,
                        "src": "26947:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                          "typeString": "mapping(uint256 => struct MVOStaking.MVOPool storage ref)"
                        }
                      },
                      "id": 1326,
                      "indexExpression": {
                        "id": 1325,
                        "name": "_miningPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "26959:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "26947:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                        "typeString": "struct MVOStaking.MVOPool storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 1330,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "27020:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "27024:6:0",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "27020:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "27012:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_payable_$",
                              "typeString": "type(address payable)"
                            },
                            "typeName": {
                              "id": 1328,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "27012:8:0",
                              "stateMutability": "payable",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27012:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "id": 1335,
                              "name": "_dues",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1270,
                              "src": "27059:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "27052:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": {
                              "id": 1333,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "27052:6:0",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27052:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        ],
                        "id": 1327,
                        "name": "MVOPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67,
                        "src": "26976:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_MVOPool_$67_storage_ptr_$",
                          "typeString": "type(struct MVOStaking.MVOPool storage pointer)"
                        }
                      },
                      "id": 1337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [
                        "26999:11:0",
                        "27046:4:0"
                      ],
                      "names": [
                        "poolAddress",
                        "dues"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "26976:101:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVOPool_$67_memory_ptr",
                        "typeString": "struct MVOStaking.MVOPool memory"
                      }
                    },
                    "src": "26947:130:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                      "typeString": "struct MVOStaking.MVOPool storage ref"
                    }
                  },
                  "id": 1339,
                  "nodeType": "ExpressionStatement",
                  "src": "26947:130:0"
                },
                {
                  "expression": {
                    "id": 1348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 1340,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "27152:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1342,
                        "indexExpression": {
                          "id": 1341,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1272,
                          "src": "27160:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27152:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1343,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "27168:12:0",
                      "memberName": "memberPoolId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 56,
                      "src": "27152:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint120",
                        "typeString": "uint120"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1346,
                          "name": "_miningPoolId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1268,
                          "src": "27191:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "27183:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint120_$",
                          "typeString": "type(uint120)"
                        },
                        "typeName": {
                          "id": 1344,
                          "name": "uint120",
                          "nodeType": "ElementaryTypeName",
                          "src": "27183:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 1347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "27183:22:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint120",
                        "typeString": "uint120"
                      }
                    },
                    "src": "27152:53:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "id": 1349,
                  "nodeType": "ExpressionStatement",
                  "src": "27152:53:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1351,
                        "name": "_miningPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "27238:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1352,
                        "name": "_dues",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1270,
                        "src": "27253:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1353,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1272,
                        "src": "27260:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 1350,
                      "name": "MVOPoolCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 196,
                      "src": "27223:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint256,string memory)"
                      }
                    },
                    "id": 1354,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27223:44:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1355,
                  "nodeType": "EmitStatement",
                  "src": "27218:49:0"
                }
              ]
            },
            "documentation": {
              "id": 1266,
              "nodeType": "StructuredDocumentation",
              "src": "25464:630:0",
              "text": "@notice for an MVO to create an MVO pool -- msg.sender will be 'poolAddress'. Cannot be altered after creation; only option is to delete pool and start another with a new 'miningPoolId'\n @param _miningPoolId: unique ID of prospective MVO pool. Cannot be 0 -- this is the default value and indicates an MVO is not in a pool in its MVO struct\n @param _dues: amount of dues required to be a pool member, in 18 decimals (which also corresponds to wei). Must be < 5e17 (< 50%). 5e16 corresponds to 5%.\n @param _mvoID: MVO ID of msg.sender\n @dev to prevent dues dodging, user must claim any points first"
            },
            "functionSelector": "475ebbf2",
            "id": 1357,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createMVOPool",
            "nameLocation": "26109:13:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1268,
                  "mutability": "mutable",
                  "name": "_miningPoolId",
                  "nameLocation": "26141:13:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1357,
                  "src": "26133:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26133:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1270,
                  "mutability": "mutable",
                  "name": "_dues",
                  "nameLocation": "26173:5:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1357,
                  "src": "26165:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1269,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26165:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1272,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "26205:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1357,
                  "src": "26189:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1271,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "26189:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26122:96:0"
            },
            "returnParameters": {
              "id": 1274,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26228:0:0"
            },
            "scope": 1967,
            "src": "26100:1175:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1397,
              "nodeType": "Block",
              "src": "27550:401:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 1365,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "27681:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "27685:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "27681:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "expression": {
                          "baseExpression": {
                            "id": 1367,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "27695:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 1369,
                          "indexExpression": {
                            "id": 1368,
                            "name": "_mvoID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1362,
                            "src": "27703:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "27695:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "id": 1370,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "27711:14:0",
                        "memberName": "stakingAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 48,
                        "src": "27695:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "27681:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "id": 1381,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "baseExpression": {
                            "id": 1372,
                            "name": "idToMVOPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 174,
                            "src": "27742:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                              "typeString": "mapping(uint256 => struct MVOStaking.MVOPool storage ref)"
                            }
                          },
                          "id": 1374,
                          "indexExpression": {
                            "id": 1373,
                            "name": "_miningPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1360,
                            "src": "27754:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "27742:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                            "typeString": "struct MVOStaking.MVOPool storage ref"
                          }
                        },
                        "id": 1375,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "27769:11:0",
                        "memberName": "poolAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 64,
                        "src": "27742:38:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 1378,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "27792:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "27796:6:0",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "27792:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "27784:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_payable_$",
                            "typeString": "type(address payable)"
                          },
                          "typeName": {
                            "id": 1376,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "27784:8:0",
                            "stateMutability": "payable",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27784:19:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "27742:61:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27681:122:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1386,
                  "nodeType": "IfStatement",
                  "src": "27663:183:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1383,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "27822:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "27822:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1385,
                    "nodeType": "RevertStatement",
                    "src": "27815:31:0"
                  }
                },
                {
                  "expression": {
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "27857:33:0",
                    "subExpression": {
                      "baseExpression": {
                        "id": 1387,
                        "name": "idToMVOPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 174,
                        "src": "27864:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                          "typeString": "mapping(uint256 => struct MVOStaking.MVOPool storage ref)"
                        }
                      },
                      "id": 1389,
                      "indexExpression": {
                        "id": 1388,
                        "name": "_miningPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1360,
                        "src": "27876:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "27864:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                        "typeString": "struct MVOStaking.MVOPool storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1391,
                  "nodeType": "ExpressionStatement",
                  "src": "27857:33:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1393,
                        "name": "_miningPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1360,
                        "src": "27921:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1394,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1362,
                        "src": "27936:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 1392,
                      "name": "MVOPoolDeleted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 202,
                      "src": "27906:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,string memory)"
                      }
                    },
                    "id": 1395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27906:37:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1396,
                  "nodeType": "EmitStatement",
                  "src": "27901:42:0"
                }
              ]
            },
            "documentation": {
              "id": 1358,
              "nodeType": "StructuredDocumentation",
              "src": "27283:157:0",
              "text": "@notice for an MVO pool creator to delete their pool\n @param _miningPoolId: msg.sender's MVO pool ID\n @param _mvoID: MVO ID of msg.sender"
            },
            "functionSelector": "bbeb3955",
            "id": 1398,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deleteMVOPool",
            "nameLocation": "27455:13:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1360,
                  "mutability": "mutable",
                  "name": "_miningPoolId",
                  "nameLocation": "27487:13:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1398,
                  "src": "27479:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1359,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27479:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1362,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "27527:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1398,
                  "src": "27511:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1361,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "27511:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27468:72:0"
            },
            "returnParameters": {
              "id": 1364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27550:0:0"
            },
            "scope": 1967,
            "src": "27446:505:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1471,
              "nodeType": "Block",
              "src": "28416:897:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1412,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 1406,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "28431:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "28435:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "28431:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1408,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "28445:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1410,
                        "indexExpression": {
                          "id": 1409,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1403,
                          "src": "28453:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "28445:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1411,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "28461:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "28445:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "28431:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1416,
                  "nodeType": "IfStatement",
                  "src": "28427:94:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1413,
                        "name": "IDAndMsgSenderMismatch",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "28497:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "28497:24:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1415,
                    "nodeType": "RevertStatement",
                    "src": "28490:31:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 1417,
                        "name": "pointsBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 152,
                        "src": "28589:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 1420,
                      "indexExpression": {
                        "expression": {
                          "id": 1418,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "28603:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "28607:6:0",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "28603:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "28589:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1421,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "28617:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "28589:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1426,
                  "nodeType": "IfStatement",
                  "src": "28585:59:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1423,
                        "name": "UnclaimedPoints",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 320,
                        "src": "28627:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "28627:17:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1425,
                    "nodeType": "RevertStatement",
                    "src": "28620:24:0"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 1427,
                        "name": "_newMiningPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1401,
                        "src": "28700:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 1428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "28720:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "28700:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "baseExpression": {
                            "id": 1430,
                            "name": "idToMVOPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 174,
                            "src": "28738:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_MVOPool_$67_storage_$",
                              "typeString": "mapping(uint256 => struct MVOStaking.MVOPool storage ref)"
                            }
                          },
                          "id": 1432,
                          "indexExpression": {
                            "id": 1431,
                            "name": "_newMiningPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1401,
                            "src": "28750:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28738:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVOPool_$67_storage",
                            "typeString": "struct MVOStaking.MVOPool storage ref"
                          }
                        },
                        "id": 1433,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "28768:11:0",
                        "memberName": "poolAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 64,
                        "src": "28738:41:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 1436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28791:1:0",
                            "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": 1435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "28783:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1434,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "28783:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28783:10:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "28738:55:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "28700:93:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1443,
                  "nodeType": "IfStatement",
                  "src": "28682:148:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1440,
                        "name": "PoolDoesNotExist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 318,
                        "src": "28812:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "28812:18:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1442,
                    "nodeType": "RevertStatement",
                    "src": "28805:25:0"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1445,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1403,
                        "src": "28931:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 1444,
                      "name": "checkMVO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1754,
                      "src": "28922:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_string_calldata_ptr_$returns$__$",
                        "typeString": "function (string calldata) view"
                      }
                    },
                    "id": 1446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28922:16:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1447,
                  "nodeType": "ExpressionStatement",
                  "src": "28922:16:0"
                },
                {
                  "assignments": [
                    1449
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1449,
                      "mutability": "mutable",
                      "name": "_currentPoolId",
                      "nameLocation": "29011:14:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1471,
                      "src": "29003:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1448,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "29003:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1454,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 1450,
                        "name": "idToMVO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 163,
                        "src": "29028:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                          "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                        }
                      },
                      "id": 1452,
                      "indexExpression": {
                        "id": 1451,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1403,
                        "src": "29036:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "29028:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVO_$61_storage",
                        "typeString": "struct MVOStaking.MVO storage ref"
                      }
                    },
                    "id": 1453,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "29044:12:0",
                    "memberName": "memberPoolId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 56,
                    "src": "29028:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "29003:53:0"
                },
                {
                  "expression": {
                    "id": 1463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 1455,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "29168:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1457,
                        "indexExpression": {
                          "id": 1456,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1403,
                          "src": "29176:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "29168:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1458,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "29184:12:0",
                      "memberName": "memberPoolId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 56,
                      "src": "29168:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint120",
                        "typeString": "uint120"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1461,
                          "name": "_newMiningPoolId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1401,
                          "src": "29207:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "29199:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint120_$",
                          "typeString": "type(uint120)"
                        },
                        "typeName": {
                          "id": 1459,
                          "name": "uint120",
                          "nodeType": "ElementaryTypeName",
                          "src": "29199:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 1462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "29199:25:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint120",
                        "typeString": "uint120"
                      }
                    },
                    "src": "29168:56:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "id": 1464,
                  "nodeType": "ExpressionStatement",
                  "src": "29168:56:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1466,
                        "name": "_newMiningPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1401,
                        "src": "29264:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1467,
                        "name": "_currentPoolId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1449,
                        "src": "29282:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1468,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1403,
                        "src": "29298:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "id": 1465,
                      "name": "PoolMembershipUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 263,
                      "src": "29242:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint256,string memory)"
                      }
                    },
                    "id": 1469,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29242:63:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1470,
                  "nodeType": "EmitStatement",
                  "src": "29237:68:0"
                }
              ]
            },
            "documentation": {
              "id": 1399,
              "nodeType": "StructuredDocumentation",
              "src": "27959:334:0",
              "text": "@notice for an MVO to join an existing MVO mining pool, change pool membership, or leave a pool\n @param _newMiningPoolId: pool ID which msg.sender desires to join; pass 0 to leave a pool without a replacement\n @dev to prevent dues dodging, user must claim any points first\n @param _mvoID: MVO ID of msg.sender"
            },
            "functionSelector": "fc68a230",
            "id": 1472,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateMVOPoolMembership",
            "nameLocation": "28308:23:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1401,
                  "mutability": "mutable",
                  "name": "_newMiningPoolId",
                  "nameLocation": "28350:16:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1472,
                  "src": "28342:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1400,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28342:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1403,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "28393:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1472,
                  "src": "28377:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1402,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "28377:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28331:75:0"
            },
            "returnParameters": {
              "id": 1405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28416:0:0"
            },
            "scope": 1967,
            "src": "28299:1014:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1488,
              "nodeType": "Block",
              "src": "29779:87:0",
              "statements": [
                {
                  "expression": {
                    "id": 1482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1480,
                      "name": "codeHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 122,
                      "src": "29790:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 1481,
                      "name": "_newCodeHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1475,
                      "src": "29801:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "29790:23:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1483,
                  "nodeType": "ExpressionStatement",
                  "src": "29790:23:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1485,
                        "name": "_newCodeHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1475,
                        "src": "29845:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1484,
                      "name": "CodeHashChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 184,
                      "src": "29829:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29829:29:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1487,
                  "nodeType": "EmitStatement",
                  "src": "29824:34:0"
                }
              ]
            },
            "documentation": {
              "id": 1473,
              "nodeType": "StructuredDocumentation",
              "src": "29321:387:0",
              "text": "@notice update 'codeHash', designating a new hash of the off-chain codebase storage location reference or entire codebase, for user verification\n @dev admin should apprise users of how to verify the 'codeHash' -- the 'codeHash' is publicly accessible via getter as a public storage variable\n @param _newCodeHash: new bytes32 hash of the off-chain codebase or location"
            },
            "functionSelector": "7c1c485d",
            "id": 1489,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1478,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1477,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "29769:9:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 284,
                  "src": "29769:9:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "29769:9:0"
              }
            ],
            "name": "updateCodeHash",
            "nameLocation": "29723:14:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1475,
                  "mutability": "mutable",
                  "name": "_newCodeHash",
                  "nameLocation": "29746:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1489,
                  "src": "29738:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1474,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "29738:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29737:22:0"
            },
            "returnParameters": {
              "id": 1479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29779:0:0"
            },
            "scope": 1967,
            "src": "29714:152:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1540,
              "nodeType": "Block",
              "src": "30309:633:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1500,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "30509:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1502,
                        "indexExpression": {
                          "id": 1501,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1492,
                          "src": "30517:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "30509:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1503,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "30525:14:0",
                      "memberName": "stakingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 48,
                      "src": "30509:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 1506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30551:1:0",
                          "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": 1505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "30543:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 1504,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30543:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 1507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30543:10:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "30509:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1526,
                  "nodeType": "IfStatement",
                  "src": "30505:336:0",
                  "trueBody": {
                    "id": 1525,
                    "nodeType": "Block",
                    "src": "30555:286:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1512,
                              "name": "_mvoID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1492,
                              "src": "30573:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "expression": {
                              "id": 1509,
                              "name": "mvoIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 141,
                              "src": "30561:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            "id": 1511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "30568:4:0",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "30561:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$_t_string_storage_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$",
                              "typeString": "function (string storage ref[] storage pointer,string storage ref)"
                            }
                          },
                          "id": 1513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30561:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1514,
                        "nodeType": "ExpressionStatement",
                        "src": "30561:19:0"
                      },
                      {
                        "expression": {
                          "id": 1519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1515,
                              "name": "mvoIdsIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 157,
                              "src": "30726:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
                                "typeString": "mapping(string memory => uint256)"
                              }
                            },
                            "id": 1517,
                            "indexExpression": {
                              "id": 1516,
                              "name": "_mvoID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1492,
                              "src": "30738:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "30726:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1518,
                            "name": "mvoIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 128,
                            "src": "30748:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30726:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1520,
                        "nodeType": "ExpressionStatement",
                        "src": "30726:30:0"
                      },
                      {
                        "id": 1524,
                        "nodeType": "UncheckedBlock",
                        "src": "30762:74:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 1522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "30779:10:0",
                              "subExpression": {
                                "id": 1521,
                                "name": "mvoIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 128,
                                "src": "30781:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1523,
                            "nodeType": "ExpressionStatement",
                            "src": "30779:10:0"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 1531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 1527,
                        "name": "idToMVO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 163,
                        "src": "30851:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                          "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                        }
                      },
                      "id": 1529,
                      "indexExpression": {
                        "id": 1528,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1492,
                        "src": "30859:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "30851:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVO_$61_storage",
                        "typeString": "struct MVOStaking.MVO storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 1530,
                      "name": "_mvo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1495,
                      "src": "30869:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MVO_$61_calldata_ptr",
                        "typeString": "struct MVOStaking.MVO calldata"
                      }
                    },
                    "src": "30851:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVO_$61_storage",
                      "typeString": "struct MVOStaking.MVO storage ref"
                    }
                  },
                  "id": 1532,
                  "nodeType": "ExpressionStatement",
                  "src": "30851:22:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1534,
                        "name": "_mvoID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1492,
                        "src": "30906:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "id": 1535,
                        "name": "_mvo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1495,
                        "src": "30914:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_calldata_ptr",
                          "typeString": "struct MVOStaking.MVO calldata"
                        }
                      },
                      {
                        "expression": {
                          "id": 1536,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "30920:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "30926:7:0",
                        "memberName": "chainid",
                        "nodeType": "MemberAccess",
                        "src": "30920:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_MVO_$61_calldata_ptr",
                          "typeString": "struct MVOStaking.MVO calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1533,
                      "name": "MVOStatusChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 237,
                      "src": "30889:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_struct$_MVO_$61_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (string memory,struct MVOStaking.MVO memory,uint256)"
                      }
                    },
                    "id": 1538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30889:45:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1539,
                  "nodeType": "EmitStatement",
                  "src": "30884:50:0"
                }
              ]
            },
            "documentation": {
              "id": 1490,
              "nodeType": "StructuredDocumentation",
              "src": "29874:317:0",
              "text": "@notice for a single admin to designate, update, or revoke an MVO's config struct using its ID\n @dev single admin used here for ease and reversibility of any malicious or mistaken update\n @param _mvoID: string ID for a given MVO\n @param _mvo: new or replacement MVO struct for the given ID"
            },
            "functionSelector": "8db44153",
            "id": 1541,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1498,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1497,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "30299:9:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 284,
                  "src": "30299:9:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "30299:9:0"
              }
            ],
            "name": "updateMvoStatus",
            "nameLocation": "30206:15:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1496,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1492,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "30248:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1541,
                  "src": "30232:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1491,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30232:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1495,
                  "mutability": "mutable",
                  "name": "_mvo",
                  "nameLocation": "30278:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1541,
                  "src": "30265:17:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MVO_$61_calldata_ptr",
                    "typeString": "struct MVOStaking.MVO"
                  },
                  "typeName": {
                    "id": 1494,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1493,
                      "name": "MVO",
                      "nameLocations": [
                        "30265:3:0"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 61,
                      "src": "30265:3:0"
                    },
                    "referencedDeclaration": 61,
                    "src": "30265:3:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MVO_$61_storage_ptr",
                      "typeString": "struct MVOStaking.MVO"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30221:68:0"
            },
            "returnParameters": {
              "id": 1499,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30309:0:0"
            },
            "scope": 1967,
            "src": "30197:745:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1595,
              "nodeType": "Block",
              "src": "31248:767:0",
              "statements": [
                {
                  "assignments": [
                    1550
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1550,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "31266:7:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1595,
                      "src": "31259:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 1549,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "31259:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1562,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1557,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "31298:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "31302:6:0",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "31298:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "31290:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 1555,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "31290:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31290:19:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 1554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "31283:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 1553,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "31283:6:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31283:27:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 1552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "31276:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 1551,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "31276:6:0",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31276:35:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "31259:52:0"
                },
                {
                  "assignments": [
                    1565
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1565,
                      "mutability": "mutable",
                      "name": "_minStakeKey",
                      "nameLocation": "31567:12:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1595,
                      "src": "31559:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1564,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "31559:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "documentation": "@dev we use 'address(uint160(_newMinStake))' as the key for the 'updateRequested' mapping to force every admin to set the same value\n @notice for the possible values of _newMinStake, the discarded highest 12 bytes will be 0",
                  "id": 1573,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1570,
                            "name": "_newMinStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1544,
                            "src": "31598:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "31590:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 1568,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "31590:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31590:21:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 1567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "31582:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 1566,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "31582:7:0",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31582:30:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "31559:53:0"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 1575,
                        "name": "_minStakeKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1565,
                        "src": "31646:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1576,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1550,
                        "src": "31660:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 1577,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 72,
                          "src": "31669:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$72_$",
                            "typeString": "type(enum MVOStaking.ApprovalTypes)"
                          }
                        },
                        "id": 1578,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "31683:8:0",
                        "memberName": "MinStake",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 69,
                        "src": "31669:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                          "typeString": "enum MVOStaking.ApprovalTypes"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                          "typeString": "enum MVOStaking.ApprovalTypes"
                        }
                      ],
                      "id": 1574,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1868,
                      "src": "31627:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$72_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum MVOStaking.ApprovalTypes) returns (bool)"
                      }
                    },
                    "id": 1579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31627:65:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1594,
                  "nodeType": "IfStatement",
                  "src": "31623:385:0",
                  "trueBody": {
                    "id": 1593,
                    "nodeType": "Block",
                    "src": "31694:314:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 1582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1580,
                            "name": "minStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 125,
                            "src": "31823:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1581,
                            "name": "_newMinStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1544,
                            "src": "31834:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31823:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1583,
                        "nodeType": "ExpressionStatement",
                        "src": "31823:23:0"
                      },
                      {
                        "expression": {
                          "id": 1587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "31907:36:0",
                          "subExpression": {
                            "baseExpression": {
                              "id": 1584,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 147,
                              "src": "31914:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                              }
                            },
                            "id": 1586,
                            "indexExpression": {
                              "id": 1585,
                              "name": "_minStakeKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1565,
                              "src": "31930:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "31914:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$81_storage",
                              "typeString": "struct MVOStaking.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1588,
                        "nodeType": "ExpressionStatement",
                        "src": "31907:36:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1590,
                              "name": "_newMinStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1544,
                              "src": "31983:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1589,
                            "name": "MinimumStakeUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 188,
                            "src": "31963:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31963:33:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1592,
                        "nodeType": "EmitStatement",
                        "src": "31958:38:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1542,
              "nodeType": "StructuredDocumentation",
              "src": "30950:227:0",
              "text": "@notice update 'minStake', designating a new minimum stake amount of $ENSHROUD tokens for MVOs, after three admins have called\n @param _newMinStake: new minimum amount of $ENSHROUD tokens required for a MVO to stake"
            },
            "functionSelector": "8cdb442f",
            "id": 1596,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1547,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1546,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "31238:9:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 284,
                  "src": "31238:9:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "31238:9:0"
              }
            ],
            "name": "updateMinStake",
            "nameLocation": "31192:14:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1544,
                  "mutability": "mutable",
                  "name": "_newMinStake",
                  "nameLocation": "31215:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1596,
                  "src": "31207:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31207:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31206:22:0"
            },
            "returnParameters": {
              "id": 1548,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31248:0:0"
            },
            "scope": 1967,
            "src": "31183:832:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1645,
              "nodeType": "Block",
              "src": "32367:570:0",
              "statements": [
                {
                  "assignments": [
                    1605
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1605,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "32385:7:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1645,
                      "src": "32378:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 1604,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "32378:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1617,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1612,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "32417:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "32421:6:0",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "32417:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "32409:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 1610,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "32409:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "32409:19:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 1609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "32402:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 1608,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "32402:6:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32402:27:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 1607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "32395:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 1606,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "32395:6:0",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32395:35:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32378:52:0"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 1619,
                        "name": "_newProtocol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1599,
                        "src": "32464:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1620,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1605,
                        "src": "32478:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 1621,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 72,
                          "src": "32487:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$72_$",
                            "typeString": "type(enum MVOStaking.ApprovalTypes)"
                          }
                        },
                        "id": 1622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "32501:8:0",
                        "memberName": "Protocol",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 70,
                        "src": "32487:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                          "typeString": "enum MVOStaking.ApprovalTypes"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                          "typeString": "enum MVOStaking.ApprovalTypes"
                        }
                      ],
                      "id": 1618,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1868,
                      "src": "32445:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$72_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum MVOStaking.ApprovalTypes) returns (bool)"
                      }
                    },
                    "id": 1623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32445:65:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1644,
                  "nodeType": "IfStatement",
                  "src": "32441:489:0",
                  "trueBody": {
                    "id": 1643,
                    "nodeType": "Block",
                    "src": "32512:418:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1627,
                              "name": "_newProtocol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1599,
                              "src": "32667:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 1624,
                              "name": "enshroudProtocols",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 116,
                              "src": "32644:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 1626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "32662:4:0",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "32644:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$",
                              "typeString": "function (address[] storage pointer,address)"
                            }
                          },
                          "id": 1628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32644:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1629,
                        "nodeType": "ExpressionStatement",
                        "src": "32644:36:0"
                      },
                      {
                        "id": 1633,
                        "nodeType": "UncheckedBlock",
                        "src": "32686:76:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 1631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "32703:12:0",
                              "subExpression": {
                                "id": 1630,
                                "name": "protoIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 119,
                                "src": "32705:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1632,
                            "nodeType": "ExpressionStatement",
                            "src": "32703:12:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 1637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "32822:36:0",
                          "subExpression": {
                            "baseExpression": {
                              "id": 1634,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 147,
                              "src": "32829:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                              }
                            },
                            "id": 1636,
                            "indexExpression": {
                              "id": 1635,
                              "name": "_newProtocol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1599,
                              "src": "32845:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "32829:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$81_storage",
                              "typeString": "struct MVOStaking.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1638,
                        "nodeType": "ExpressionStatement",
                        "src": "32822:36:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1640,
                              "name": "_newProtocol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1599,
                              "src": "32905:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1639,
                            "name": "MVOStaking_ProtocolUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 212,
                            "src": "32878:26:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32878:40:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1642,
                        "nodeType": "EmitStatement",
                        "src": "32873:45:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1597,
              "nodeType": "StructuredDocumentation",
              "src": "32023:273:0",
              "text": "@notice update 'enshroudProtocol' a new protocol address, such as for a v2 upgrade, after three admins have called\n @param _newProtocol: new Enshroud Protocol contract address, changing 'enshroudProtocol'; must correctly implement public 'adminStatus[]' mapping"
            },
            "functionSelector": "727a573c",
            "id": 1646,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1602,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1601,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "32357:9:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 284,
                  "src": "32357:9:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "32357:9:0"
              }
            ],
            "name": "updateProtocol",
            "nameLocation": "32311:14:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1599,
                  "mutability": "mutable",
                  "name": "_newProtocol",
                  "nameLocation": "32334:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1646,
                  "src": "32326:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1598,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "32326:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32325:22:0"
            },
            "returnParameters": {
              "id": 1603,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32367:0:0"
            },
            "scope": 1967,
            "src": "32302:635:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1689,
              "nodeType": "Block",
              "src": "33240:377:0",
              "statements": [
                {
                  "assignments": [
                    1655
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1655,
                      "mutability": "mutable",
                      "name": "_caller",
                      "nameLocation": "33252:7:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1689,
                      "src": "33245:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 1654,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "33245:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1667,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1662,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "33284:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "33288:6:0",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "33284:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "33276:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 1660,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "33276:7:0",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33276:19:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 1659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "33269:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 1658,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "33269:6:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33269:27:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 1657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "33262:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes8_$",
                        "typeString": "type(bytes8)"
                      },
                      "typeName": {
                        "id": 1656,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "33262:6:0",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33262:35:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "33245:52:0"
                },
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 1669,
                        "name": "_newBot",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1649,
                        "src": "33325:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1670,
                        "name": "_caller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1655,
                        "src": "33334:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "expression": {
                          "id": 1671,
                          "name": "ApprovalTypes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 72,
                          "src": "33343:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ApprovalTypes_$72_$",
                            "typeString": "type(enum MVOStaking.ApprovalTypes)"
                          }
                        },
                        "id": 1672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "33357:9:0",
                        "memberName": "PointsBot",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 71,
                        "src": "33343:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                          "typeString": "enum MVOStaking.ApprovalTypes"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                          "typeString": "enum MVOStaking.ApprovalTypes"
                        }
                      ],
                      "id": 1668,
                      "name": "_isRequestApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1868,
                      "src": "33306:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes8_$_t_enum$_ApprovalTypes_$72_$returns$_t_bool_$",
                        "typeString": "function (address,bytes8,enum MVOStaking.ApprovalTypes) returns (bool)"
                      }
                    },
                    "id": 1673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33306:61:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1688,
                  "nodeType": "IfStatement",
                  "src": "33302:311:0",
                  "trueBody": {
                    "id": 1687,
                    "nodeType": "Block",
                    "src": "33369:244:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 1676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1674,
                            "name": "pointsBot",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 137,
                            "src": "33478:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1675,
                            "name": "_newBot",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1649,
                            "src": "33490:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "33478:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1677,
                        "nodeType": "ExpressionStatement",
                        "src": "33478:19:0"
                      },
                      {
                        "expression": {
                          "id": 1681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "33540:31:0",
                          "subExpression": {
                            "baseExpression": {
                              "id": 1678,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 147,
                              "src": "33547:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                              }
                            },
                            "id": 1680,
                            "indexExpression": {
                              "id": 1679,
                              "name": "_newBot",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1649,
                              "src": "33563:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "33547:24:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$81_storage",
                              "typeString": "struct MVOStaking.Requests storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1682,
                        "nodeType": "ExpressionStatement",
                        "src": "33540:31:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1684,
                              "name": "_newBot",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1649,
                              "src": "33599:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1683,
                            "name": "PointsBotUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 249,
                            "src": "33582:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33582:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1686,
                        "nodeType": "EmitStatement",
                        "src": "33577:30:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1647,
              "nodeType": "StructuredDocumentation",
              "src": "32942:234:0",
              "text": "@notice set or update 'pointsBot' a new bot address authorized to import MVO points awarded on other chains (relevant only on mainnet contract deployment)\n @param _newBot: new bot authorized to import points from other chains"
            },
            "functionSelector": "7ef76c3c",
            "id": 1690,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1652,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 1651,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "33230:9:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 284,
                  "src": "33230:9:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "33230:9:0"
              }
            ],
            "name": "updatePointsBot",
            "nameLocation": "33188:15:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1650,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1649,
                  "mutability": "mutable",
                  "name": "_newBot",
                  "nameLocation": "33212:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1690,
                  "src": "33204:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1648,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "33204:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33203:17:0"
            },
            "returnParameters": {
              "id": 1653,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33240:0:0"
            },
            "scope": 1967,
            "src": "33179:438:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1729,
              "nodeType": "Block",
              "src": "34101:233:0",
              "statements": [
                {
                  "assignments": [
                    1701,
                    1703,
                    1705
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1701,
                      "mutability": "mutable",
                      "name": "v",
                      "nameLocation": "34119:1:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1729,
                      "src": "34113:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1700,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "34113:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1703,
                      "mutability": "mutable",
                      "name": "r",
                      "nameLocation": "34130:1:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1729,
                      "src": "34122:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1702,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "34122:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1705,
                      "mutability": "mutable",
                      "name": "s",
                      "nameLocation": "34141:1:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1729,
                      "src": "34133:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1704,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "34133:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1709,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1707,
                        "name": "_mvoSig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1695,
                        "src": "34162:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 1706,
                      "name": "_splitSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1895,
                      "src": "34146:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (uint8,bytes32,bytes32)"
                      }
                    },
                    "id": 1708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34146:24:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(uint8,bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "34112:58:0"
                },
                {
                  "assignments": [
                    1711
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1711,
                      "mutability": "mutable",
                      "name": "_signAddr",
                      "nameLocation": "34189:9:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1729,
                      "src": "34181:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1710,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "34181:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1718,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1713,
                        "name": "_obHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1697,
                        "src": "34211:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 1714,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1701,
                        "src": "34220:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 1715,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1703,
                        "src": "34223:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 1716,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1705,
                        "src": "34226:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1712,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -6,
                      "src": "34201:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 1717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34201:27:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "34181:47:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1719,
                          "name": "idToMVO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 163,
                          "src": "34243:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                            "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                          }
                        },
                        "id": 1721,
                        "indexExpression": {
                          "id": 1720,
                          "name": "_mvoID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1693,
                          "src": "34251:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_calldata_ptr",
                            "typeString": "string calldata"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "34243:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MVO_$61_storage",
                          "typeString": "struct MVOStaking.MVO storage ref"
                        }
                      },
                      "id": 1722,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "34259:14:0",
                      "memberName": "signingAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 50,
                      "src": "34243:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 1723,
                      "name": "_signAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1711,
                      "src": "34277:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "34243:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1728,
                  "nodeType": "IfStatement",
                  "src": "34239:87:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1725,
                        "name": "InvalidSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 302,
                        "src": "34308:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1726,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "34308:18:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1727,
                    "nodeType": "RevertStatement",
                    "src": "34301:25:0"
                  }
                }
              ]
            },
            "documentation": {
              "id": 1691,
              "nodeType": "StructuredDocumentation",
              "src": "33625:336:0",
              "text": "@notice check an MVO's signature against its ID and verify signature - will revert if not\n @param _mvoID: ID of MVO to access relevant struct containing MVO information\n @param _mvoSig: signature of MVO to check against its ID using the idToMVO mapping\n @param _obHash: keccak256 hash of the Operations Block"
            },
            "functionSelector": "c4df873f",
            "id": 1730,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkMVOSig",
            "nameLocation": "33976:11:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1693,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "34014:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1730,
                  "src": "33998:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1692,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33998:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1695,
                  "mutability": "mutable",
                  "name": "_mvoSig",
                  "nameLocation": "34046:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1730,
                  "src": "34031:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1694,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "34031:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1697,
                  "mutability": "mutable",
                  "name": "_obHash",
                  "nameLocation": "34072:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1730,
                  "src": "34064:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1696,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "34064:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33987:99:0"
            },
            "returnParameters": {
              "id": 1699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34101:0:0"
            },
            "scope": 1967,
            "src": "33967:367:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1753,
              "nodeType": "Block",
              "src": "34581:164:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1740,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "34610:23:0",
                      "subExpression": {
                        "expression": {
                          "baseExpression": {
                            "id": 1736,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "34611:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 1738,
                          "indexExpression": {
                            "id": 1737,
                            "name": "_mvoID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1733,
                            "src": "34619:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "34611:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "id": 1739,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "34627:6:0",
                        "memberName": "active",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 60,
                        "src": "34611:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "baseExpression": {
                            "id": 1741,
                            "name": "idToMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "34637:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_MVO_$61_storage_$",
                              "typeString": "mapping(string memory => struct MVOStaking.MVO storage ref)"
                            }
                          },
                          "id": 1743,
                          "indexExpression": {
                            "id": 1742,
                            "name": "_mvoID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1733,
                            "src": "34645:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "34637:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MVO_$61_storage",
                            "typeString": "struct MVOStaking.MVO storage ref"
                          }
                        },
                        "id": 1744,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "34653:14:0",
                        "memberName": "stakingQuantum",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 54,
                        "src": "34637:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 1745,
                        "name": "minStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "34670:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "34637:41:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "34610:68:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1752,
                  "nodeType": "IfStatement",
                  "src": "34592:146:0",
                  "trueBody": {
                    "id": 1751,
                    "nodeType": "Block",
                    "src": "34690:48:0",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1748,
                            "name": "NotActiveMVO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 308,
                            "src": "34712:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                              "typeString": "function () pure returns (error)"
                            }
                          },
                          "id": 1749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34712:14:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_error",
                            "typeString": "error"
                          }
                        },
                        "id": 1750,
                        "nodeType": "RevertStatement",
                        "src": "34705:21:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1731,
              "nodeType": "StructuredDocumentation",
              "src": "34342:179:0",
              "text": "@notice check an MVO's struct and ensure it has at least 'minStake' tokens and is active\n @param _mvoID: ID of MVO to access relevant struct containing MVO information"
            },
            "functionSelector": "bb21aa52",
            "id": 1754,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkMVO",
            "nameLocation": "34536:8:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1733,
                  "mutability": "mutable",
                  "name": "_mvoID",
                  "nameLocation": "34561:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1754,
                  "src": "34545:22:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1732,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34545:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34544:24:0"
            },
            "returnParameters": {
              "id": 1735,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34581:0:0"
            },
            "scope": 1967,
            "src": "34527:218:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1867,
              "nodeType": "Block",
              "src": "35166:942:0",
              "statements": [
                {
                  "assignments": [
                    1768
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1768,
                      "mutability": "mutable",
                      "name": "_default",
                      "nameLocation": "35184:8:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1867,
                      "src": "35177:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 1767,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "35177:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1769,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35177:15:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    },
                    "id": 1775,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1770,
                          "name": "updateRequested",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 147,
                          "src": "35209:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                            "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                          }
                        },
                        "id": 1772,
                        "indexExpression": {
                          "id": 1771,
                          "name": "_reqAddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1757,
                          "src": "35225:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "35209:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Requests_$81_storage",
                          "typeString": "struct MVOStaking.Requests storage ref"
                        }
                      },
                      "id": 1773,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "35235:10:0",
                      "memberName": "requester1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 75,
                      "src": "35209:36:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "id": 1774,
                      "name": "_default",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1768,
                      "src": "35249:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "src": "35209:48:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 1817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            },
                            "id": 1796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 1791,
                                  "name": "updateRequested",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 147,
                                  "src": "35404:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                    "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                  }
                                },
                                "id": 1793,
                                "indexExpression": {
                                  "id": 1792,
                                  "name": "_reqAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1757,
                                  "src": "35420:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "35404:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Requests_$81_storage",
                                  "typeString": "struct MVOStaking.Requests storage ref"
                                }
                              },
                              "id": 1794,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "35430:10:0",
                              "memberName": "requester1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 75,
                              "src": "35404:36:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 1795,
                              "name": "_default",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1768,
                              "src": "35444:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "src": "35404:48:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            },
                            "id": 1802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 1797,
                                  "name": "updateRequested",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 147,
                                  "src": "35469:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                    "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                  }
                                },
                                "id": 1799,
                                "indexExpression": {
                                  "id": 1798,
                                  "name": "_reqAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1757,
                                  "src": "35485:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "35469:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Requests_$81_storage",
                                  "typeString": "struct MVOStaking.Requests storage ref"
                                }
                              },
                              "id": 1800,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "35495:10:0",
                              "memberName": "requester2",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 77,
                              "src": "35469:36:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 1801,
                              "name": "_default",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1768,
                              "src": "35509:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "src": "35469:48:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35404:113:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          },
                          "id": 1809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1804,
                            "name": "_caller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1759,
                            "src": "35534:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1805,
                                "name": "updateRequested",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 147,
                                "src": "35545:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                  "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                }
                              },
                              "id": 1807,
                              "indexExpression": {
                                "id": 1806,
                                "name": "_reqAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1757,
                                "src": "35561:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "35545:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Requests_$81_storage",
                                "typeString": "struct MVOStaking.Requests storage ref"
                              }
                            },
                            "id": 1808,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "35571:10:0",
                            "memberName": "requester1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 75,
                            "src": "35545:36:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          },
                          "src": "35534:47:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "35404:177:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                          "typeString": "enum MVOStaking.ApprovalTypes"
                        },
                        "id": 1816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1811,
                          "name": "_reqType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1762,
                          "src": "35589:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                            "typeString": "enum MVOStaking.ApprovalTypes"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 1812,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 147,
                              "src": "35601:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                              }
                            },
                            "id": 1814,
                            "indexExpression": {
                              "id": 1813,
                              "name": "_reqAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1757,
                              "src": "35617:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35601:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$81_storage",
                              "typeString": "struct MVOStaking.Requests storage ref"
                            }
                          },
                          "id": 1815,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "35627:11:0",
                          "memberName": "requestType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 80,
                          "src": "35601:37:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                            "typeString": "enum MVOStaking.ApprovalTypes"
                          }
                        },
                        "src": "35589:49:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "35404:234:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                },
                                "id": 1830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 1825,
                                      "name": "updateRequested",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 147,
                                      "src": "35730:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                        "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                      }
                                    },
                                    "id": 1827,
                                    "indexExpression": {
                                      "id": 1826,
                                      "name": "_reqAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1757,
                                      "src": "35746:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "35730:25:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Requests_$81_storage",
                                      "typeString": "struct MVOStaking.Requests storage ref"
                                    }
                                  },
                                  "id": 1828,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "35756:10:0",
                                  "memberName": "requester1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 75,
                                  "src": "35730:36:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 1829,
                                  "name": "_default",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1768,
                                  "src": "35770:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                },
                                "src": "35730:48:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                },
                                "id": 1836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 1831,
                                      "name": "updateRequested",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 147,
                                      "src": "35795:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                        "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                      }
                                    },
                                    "id": 1833,
                                    "indexExpression": {
                                      "id": 1832,
                                      "name": "_reqAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1757,
                                      "src": "35811:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "35795:25:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Requests_$81_storage",
                                      "typeString": "struct MVOStaking.Requests storage ref"
                                    }
                                  },
                                  "id": 1834,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "35821:10:0",
                                  "memberName": "requester2",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 77,
                                  "src": "35795:36:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 1835,
                                  "name": "_default",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1768,
                                  "src": "35835:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                },
                                "src": "35795:48:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "35730:113:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              },
                              "id": 1843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1838,
                                "name": "_caller",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1759,
                                "src": "35860:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 1839,
                                    "name": "updateRequested",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 147,
                                    "src": "35871:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                      "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                    }
                                  },
                                  "id": 1841,
                                  "indexExpression": {
                                    "id": 1840,
                                    "name": "_reqAddr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1757,
                                    "src": "35887:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "35871:25:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Requests_$81_storage",
                                    "typeString": "struct MVOStaking.Requests storage ref"
                                  }
                                },
                                "id": 1842,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "35897:10:0",
                                "memberName": "requester1",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 75,
                                "src": "35871:36:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes8",
                                  "typeString": "bytes8"
                                }
                              },
                              "src": "35860:47:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "35730:177:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            },
                            "id": 1850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1845,
                              "name": "_caller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1759,
                              "src": "35924:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 1846,
                                  "name": "updateRequested",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 147,
                                  "src": "35935:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                    "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                  }
                                },
                                "id": 1848,
                                "indexExpression": {
                                  "id": 1847,
                                  "name": "_reqAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1757,
                                  "src": "35951:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "35935:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Requests_$81_storage",
                                  "typeString": "struct MVOStaking.Requests storage ref"
                                }
                              },
                              "id": 1849,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "35961:10:0",
                              "memberName": "requester2",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 77,
                              "src": "35935:36:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes8",
                                "typeString": "bytes8"
                              }
                            },
                            "src": "35924:47:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35730:241:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                            "typeString": "enum MVOStaking.ApprovalTypes"
                          },
                          "id": 1857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1852,
                            "name": "_reqType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1762,
                            "src": "35979:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                              "typeString": "enum MVOStaking.ApprovalTypes"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1853,
                                "name": "updateRequested",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 147,
                                "src": "35991:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                  "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                }
                              },
                              "id": 1855,
                              "indexExpression": {
                                "id": 1854,
                                "name": "_reqAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1757,
                                "src": "36007:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "35991:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Requests_$81_storage",
                                "typeString": "struct MVOStaking.Requests storage ref"
                              }
                            },
                            "id": 1856,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "36017:11:0",
                            "memberName": "requestType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 80,
                            "src": "35991:37:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                              "typeString": "enum MVOStaking.ApprovalTypes"
                            }
                          },
                          "src": "35979:49:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "35730:298:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1862,
                      "nodeType": "IfStatement",
                      "src": "35712:366:0",
                      "trueBody": {
                        "id": 1861,
                        "nodeType": "Block",
                        "src": "36040:38:0",
                        "statements": [
                          {
                            "expression": {
                              "hexValue": "74727565",
                              "id": 1859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "36062:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "functionReturnParameters": 1766,
                            "id": 1860,
                            "nodeType": "Return",
                            "src": "36055:11:0"
                          }
                        ]
                      }
                    },
                    "id": 1863,
                    "nodeType": "IfStatement",
                    "src": "35386:692:0",
                    "trueBody": {
                      "expression": {
                        "id": 1823,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "expression": {
                            "baseExpression": {
                              "id": 1818,
                              "name": "updateRequested",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 147,
                              "src": "35650:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                              }
                            },
                            "id": 1820,
                            "indexExpression": {
                              "id": 1819,
                              "name": "_reqAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1757,
                              "src": "35666:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35650:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Requests_$81_storage",
                              "typeString": "struct MVOStaking.Requests storage ref"
                            }
                          },
                          "id": 1821,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberLocation": "35676:10:0",
                          "memberName": "requester2",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 77,
                          "src": "35650:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "id": 1822,
                          "name": "_caller",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1759,
                          "src": "35689:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        "src": "35650:46:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "id": 1824,
                      "nodeType": "ExpressionStatement",
                      "src": "35650:46:0"
                    }
                  },
                  "id": 1864,
                  "nodeType": "IfStatement",
                  "src": "35205:873:0",
                  "trueBody": {
                    "id": 1790,
                    "nodeType": "Block",
                    "src": "35259:121:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 1781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1776,
                                "name": "updateRequested",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 147,
                                "src": "35274:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                  "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                }
                              },
                              "id": 1778,
                              "indexExpression": {
                                "id": 1777,
                                "name": "_reqAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1757,
                                "src": "35290:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "35274:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Requests_$81_storage",
                                "typeString": "struct MVOStaking.Requests storage ref"
                              }
                            },
                            "id": 1779,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35300:10:0",
                            "memberName": "requester1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 75,
                            "src": "35274:36:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1780,
                            "name": "_caller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1759,
                            "src": "35313:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          },
                          "src": "35274:46:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        "id": 1782,
                        "nodeType": "ExpressionStatement",
                        "src": "35274:46:0"
                      },
                      {
                        "expression": {
                          "id": 1788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1783,
                                "name": "updateRequested",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 147,
                                "src": "35326:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Requests_$81_storage_$",
                                  "typeString": "mapping(address => struct MVOStaking.Requests storage ref)"
                                }
                              },
                              "id": 1785,
                              "indexExpression": {
                                "id": 1784,
                                "name": "_reqAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1757,
                                "src": "35342:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "35326:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Requests_$81_storage",
                                "typeString": "struct MVOStaking.Requests storage ref"
                              }
                            },
                            "id": 1786,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "35352:11:0",
                            "memberName": "requestType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 80,
                            "src": "35326:37:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                              "typeString": "enum MVOStaking.ApprovalTypes"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1787,
                            "name": "_reqType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1762,
                            "src": "35366:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                              "typeString": "enum MVOStaking.ApprovalTypes"
                            }
                          },
                          "src": "35326:48:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                            "typeString": "enum MVOStaking.ApprovalTypes"
                          }
                        },
                        "id": 1789,
                        "nodeType": "ExpressionStatement",
                        "src": "35326:48:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "66616c7365",
                    "id": 1865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "36095:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 1766,
                  "id": 1866,
                  "nodeType": "Return",
                  "src": "36088:12:0"
                }
              ]
            },
            "documentation": {
              "id": 1755,
              "nodeType": "StructuredDocumentation",
              "src": "34753:269:0",
              "text": "@notice for variable updates that require update requests from three unique admins\n @param _reqAddr: index to data being updated\n @param _caller: truncation of the admin address making the call\n @param _reqType: disambiguation for type of update call"
            },
            "id": 1868,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isRequestApproved",
            "nameLocation": "35037:18:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1757,
                  "mutability": "mutable",
                  "name": "_reqAddr",
                  "nameLocation": "35074:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1868,
                  "src": "35066:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1756,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35066:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1759,
                  "mutability": "mutable",
                  "name": "_caller",
                  "nameLocation": "35100:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1868,
                  "src": "35093:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 1758,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "35093:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1762,
                  "mutability": "mutable",
                  "name": "_reqType",
                  "nameLocation": "35126:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1868,
                  "src": "35112:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                    "typeString": "enum MVOStaking.ApprovalTypes"
                  },
                  "typeName": {
                    "id": 1761,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1760,
                      "name": "ApprovalTypes",
                      "nameLocations": [
                        "35112:13:0"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 72,
                      "src": "35112:13:0"
                    },
                    "referencedDeclaration": 72,
                    "src": "35112:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ApprovalTypes_$72",
                      "typeString": "enum MVOStaking.ApprovalTypes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35055:86:0"
            },
            "returnParameters": {
              "id": 1766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1765,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1868,
                  "src": "35160:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1764,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35160:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35159:6:0"
            },
            "scope": 1967,
            "src": "35028:1080:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1894,
              "nodeType": "Block",
              "src": "36452:409:0",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 1880,
                        "name": "_sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1871,
                        "src": "36467:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1881,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "36472:6:0",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "36467:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "3635",
                      "id": 1882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "36482:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_65_by_1",
                        "typeString": "int_const 65"
                      },
                      "value": "65"
                    },
                    "src": "36467:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1887,
                  "nodeType": "IfStatement",
                  "src": "36463:50:0",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 1884,
                        "name": "IncorrectSigLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 298,
                        "src": "36493:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                          "typeString": "function () pure returns (error)"
                        }
                      },
                      "id": 1885,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "36493:20:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_error",
                        "typeString": "error"
                      }
                    },
                    "id": 1886,
                    "nodeType": "RevertStatement",
                    "src": "36486:27:0"
                  }
                },
                {
                  "AST": {
                    "nativeSrc": "36535:290:0",
                    "nodeType": "YulBlock",
                    "src": "36535:290:0",
                    "statements": [
                      {
                        "nativeSrc": "36607:25:0",
                        "nodeType": "YulAssignment",
                        "src": "36607:25:0",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_sig",
                                  "nativeSrc": "36622:4:0",
                                  "nodeType": "YulIdentifier",
                                  "src": "36622:4:0"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "36628:2:0",
                                  "nodeType": "YulLiteral",
                                  "src": "36628:2:0",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "36618:3:0",
                                "nodeType": "YulIdentifier",
                                "src": "36618:3:0"
                              },
                              "nativeSrc": "36618:13:0",
                              "nodeType": "YulFunctionCall",
                              "src": "36618:13:0"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "36612:5:0",
                            "nodeType": "YulIdentifier",
                            "src": "36612:5:0"
                          },
                          "nativeSrc": "36612:20:0",
                          "nodeType": "YulFunctionCall",
                          "src": "36612:20:0"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nativeSrc": "36607:1:0",
                            "nodeType": "YulIdentifier",
                            "src": "36607:1:0"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "36679:25:0",
                        "nodeType": "YulAssignment",
                        "src": "36679:25:0",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_sig",
                                  "nativeSrc": "36694:4:0",
                                  "nodeType": "YulIdentifier",
                                  "src": "36694:4:0"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "36700:2:0",
                                  "nodeType": "YulLiteral",
                                  "src": "36700:2:0",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "36690:3:0",
                                "nodeType": "YulIdentifier",
                                "src": "36690:3:0"
                              },
                              "nativeSrc": "36690:13:0",
                              "nodeType": "YulFunctionCall",
                              "src": "36690:13:0"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "36684:5:0",
                            "nodeType": "YulIdentifier",
                            "src": "36684:5:0"
                          },
                          "nativeSrc": "36684:20:0",
                          "nodeType": "YulFunctionCall",
                          "src": "36684:20:0"
                        },
                        "variableNames": [
                          {
                            "name": "s",
                            "nativeSrc": "36679:1:0",
                            "nodeType": "YulIdentifier",
                            "src": "36679:1:0"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "36780:34:0",
                        "nodeType": "YulAssignment",
                        "src": "36780:34:0",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "36790:1:0",
                              "nodeType": "YulLiteral",
                              "src": "36790:1:0",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "_sig",
                                      "nativeSrc": "36803:4:0",
                                      "nodeType": "YulIdentifier",
                                      "src": "36803:4:0"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "36809:2:0",
                                      "nodeType": "YulLiteral",
                                      "src": "36809:2:0",
                                      "type": "",
                                      "value": "96"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "36799:3:0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36799:3:0"
                                  },
                                  "nativeSrc": "36799:13:0",
                                  "nodeType": "YulFunctionCall",
                                  "src": "36799:13:0"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "36793:5:0",
                                "nodeType": "YulIdentifier",
                                "src": "36793:5:0"
                              },
                              "nativeSrc": "36793:20:0",
                              "nodeType": "YulFunctionCall",
                              "src": "36793:20:0"
                            }
                          ],
                          "functionName": {
                            "name": "byte",
                            "nativeSrc": "36785:4:0",
                            "nodeType": "YulIdentifier",
                            "src": "36785:4:0"
                          },
                          "nativeSrc": "36785:29:0",
                          "nodeType": "YulFunctionCall",
                          "src": "36785:29:0"
                        },
                        "variableNames": [
                          {
                            "name": "v",
                            "nativeSrc": "36780:1:0",
                            "nodeType": "YulIdentifier",
                            "src": "36780:1:0"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "shanghai",
                  "externalReferences": [
                    {
                      "declaration": 1871,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "36622:4:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1871,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "36694:4:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1871,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "36803:4:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1876,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "36607:1:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1878,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "36679:1:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1874,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "36780:1:0",
                      "valueSize": 1
                    }
                  ],
                  "id": 1888,
                  "nodeType": "InlineAssembly",
                  "src": "36526:299:0"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "id": 1889,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1874,
                        "src": "36845:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 1890,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1876,
                        "src": "36848:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 1891,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1878,
                        "src": "36851:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 1892,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "36844:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(uint8,bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 1879,
                  "id": 1893,
                  "nodeType": "Return",
                  "src": "36837:16:0"
                }
              ]
            },
            "documentation": {
              "id": 1869,
              "nodeType": "StructuredDocumentation",
              "src": "36116:216:0",
              "text": "@notice split signature for ecrecover function, see https://docs.soliditylang.org/en/latest/solidity-by-example.html#recovering-the-message-signer-in-solidity\n @param _sig: the standard signature to be split"
            },
            "id": 1895,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_splitSignature",
            "nameLocation": "36347:15:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1871,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "36386:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1895,
                  "src": "36373:17:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1870,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "36373:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36362:35:0"
            },
            "returnParameters": {
              "id": 1879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1874,
                  "mutability": "mutable",
                  "name": "v",
                  "nameLocation": "36427:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1895,
                  "src": "36421:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1873,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "36421:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1876,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "36438:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1895,
                  "src": "36430:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1875,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "36430:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1878,
                  "mutability": "mutable",
                  "name": "s",
                  "nameLocation": "36449:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1895,
                  "src": "36441:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1877,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "36441:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36420:31:0"
            },
            "scope": 1967,
            "src": "36338:523:0",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1965,
              "nodeType": "Block",
              "src": "37314:700:0",
              "statements": [
                {
                  "assignments": [
                    1905
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1905,
                      "mutability": "mutable",
                      "name": "timelock",
                      "nameLocation": "37342:8:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1965,
                      "src": "37325:25:0",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Timelock_$91_storage_ptr",
                        "typeString": "struct MVOStaking.Timelock"
                      },
                      "typeName": {
                        "id": 1904,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1903,
                          "name": "Timelock",
                          "nameLocations": [
                            "37325:8:0"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 91,
                          "src": "37325:8:0"
                        },
                        "referencedDeclaration": 91,
                        "src": "37325:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Timelock_$91_storage_ptr",
                          "typeString": "struct MVOStaking.Timelock"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1909,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1906,
                      "name": "timelocks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 180,
                      "src": "37353:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Timelock_$91_storage_$",
                        "typeString": "mapping(address => struct MVOStaking.Timelock storage ref)"
                      }
                    },
                    "id": 1908,
                    "indexExpression": {
                      "id": 1907,
                      "name": "_recipient",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1898,
                      "src": "37363:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "37353:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Timelock_$91_storage",
                      "typeString": "struct MVOStaking.Timelock storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "37325:49:0"
                },
                {
                  "assignments": [
                    1911
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1911,
                      "mutability": "mutable",
                      "name": "_releaseStart",
                      "nameLocation": "37393:13:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1965,
                      "src": "37385:21:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1910,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "37385:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1917,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1914,
                          "name": "timelock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1905,
                          "src": "37417:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Timelock_$91_storage_ptr",
                            "typeString": "struct MVOStaking.Timelock storage pointer"
                          }
                        },
                        "id": 1915,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "37426:12:0",
                        "memberName": "releaseStart",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 88,
                        "src": "37417:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 1913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "37409:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 1912,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "37409:7:0",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37409:30:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "37385:54:0"
                },
                {
                  "assignments": [
                    1919
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1919,
                      "mutability": "mutable",
                      "name": "_releaseEnd",
                      "nameLocation": "37458:11:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 1965,
                      "src": "37450:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1918,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "37450:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1925,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1922,
                          "name": "timelock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1905,
                          "src": "37480:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Timelock_$91_storage_ptr",
                            "typeString": "struct MVOStaking.Timelock storage pointer"
                          }
                        },
                        "id": 1923,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "37489:10:0",
                        "memberName": "releaseEnd",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 90,
                        "src": "37480:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 1921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "37472:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 1920,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "37472:7:0",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37472:28:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "37450:50:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 1926,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -4,
                        "src": "37515:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 1927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "37521:6:0",
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "src": "37515:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "id": 1928,
                      "name": "_releaseStart",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1911,
                      "src": "37531:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "37515:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 1935,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "37595:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "37601:6:0",
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "src": "37595:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "id": 1937,
                        "name": "_releaseEnd",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1919,
                        "src": "37611:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "37595:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 1962,
                      "nodeType": "Block",
                      "src": "37688:319:0",
                      "statements": [
                        {
                          "expression": {
                            "id": 1960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 1945,
                              "name": "unlocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1901,
                              "src": "37880:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 1946,
                                        "name": "timelock",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1905,
                                        "src": "37892:8:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Timelock_$91_storage_ptr",
                                          "typeString": "struct MVOStaking.Timelock storage pointer"
                                        }
                                      },
                                      "id": 1947,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "37901:11:0",
                                      "memberName": "totalAmount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 84,
                                      "src": "37892:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1951,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 1948,
                                              "name": "block",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -4,
                                              "src": "37916:5:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                              }
                                            },
                                            "id": 1949,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "37922:6:0",
                                            "memberName": "number",
                                            "nodeType": "MemberAccess",
                                            "src": "37916:12:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 1950,
                                            "name": "_releaseStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1911,
                                            "src": "37931:13:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "37916:28:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 1952,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "37915:30:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "37892:53:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1954,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "37891:55:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1955,
                                      "name": "_releaseEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1919,
                                      "src": "37967:11:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 1956,
                                      "name": "_releaseStart",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1911,
                                      "src": "37981:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "37967:27:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1958,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "37966:29:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "37891:104:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "37880:115:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1961,
                          "nodeType": "ExpressionStatement",
                          "src": "37880:115:0"
                        }
                      ]
                    },
                    "id": 1963,
                    "nodeType": "IfStatement",
                    "src": "37591:416:0",
                    "trueBody": {
                      "id": 1944,
                      "nodeType": "Block",
                      "src": "37624:58:0",
                      "statements": [
                        {
                          "expression": {
                            "id": 1942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 1939,
                              "name": "unlocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1901,
                              "src": "37639:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "expression": {
                                "id": 1940,
                                "name": "timelock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1905,
                                "src": "37650:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Timelock_$91_storage_ptr",
                                  "typeString": "struct MVOStaking.Timelock storage pointer"
                                }
                              },
                              "id": 1941,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "37659:11:0",
                              "memberName": "totalAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 84,
                              "src": "37650:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "37639:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1943,
                          "nodeType": "ExpressionStatement",
                          "src": "37639:31:0"
                        }
                      ]
                    }
                  },
                  "id": 1964,
                  "nodeType": "IfStatement",
                  "src": "37511:496:0",
                  "trueBody": {
                    "id": 1934,
                    "nodeType": "Block",
                    "src": "37546:39:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 1932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1930,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1901,
                            "src": "37561:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 1931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37572:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "37561:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1933,
                        "nodeType": "ExpressionStatement",
                        "src": "37561:12:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1896,
              "nodeType": "StructuredDocumentation",
              "src": "36869:341:0",
              "text": "@notice returns 'unlocked', the amount of tokens that was unlocked for the recipient to date. Includes both withdrawn and non-withdrawn tokens.\n @dev same function as in Timelock.sol\n @param _recipient: address of the timelock recipient\n @return unlocked the quantity of tokens in a Timelock which are now unlockable"
            },
            "id": 1966,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getUnlocked",
            "nameLocation": "37225:12:0",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1898,
                  "mutability": "mutable",
                  "name": "_recipient",
                  "nameLocation": "37256:10:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1966,
                  "src": "37248:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1897,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "37248:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37237:36:0"
            },
            "returnParameters": {
              "id": 1902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1901,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "37304:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 1966,
                  "src": "37296:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1900,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "37296:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37295:18:0"
            },
            "scope": 1967,
            "src": "37216:798:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 1968,
        "src": "1284:36733:0",
        "usedErrors": [
          286,
          288,
          290,
          292,
          294,
          296,
          298,
          300,
          302,
          304,
          306,
          308,
          310,
          312,
          314,
          316,
          318,
          320,
          1972
        ],
        "usedEvents": [
          184,
          188,
          196,
          202,
          208,
          212,
          220,
          228,
          237,
          245,
          249,
          255,
          263
        ]
      }
    ],
    "src": "33:37986:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.28+commit.7893614a.Linux.g++"
  },
  "networks": {
    "1": {
      "events": {
        "0xe64e12d565716cb1d472831954a8aa6b8f660bd3d1ac40f26d0484b74061ee9b": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "newCodeHash",
              "type": "bytes32"
            }
          ],
          "name": "CodeHashChanged",
          "type": "event"
        },
        "0x588475b865c1e30d6d4caa2e0da2b4009157a04d3f2ab7d0d3b3aa08f985ef83": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "dues",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "creatorMvoID",
              "type": "string"
            }
          ],
          "name": "MVOPoolCreated",
          "type": "event"
        },
        "0xed2863a3907531988ef6702ca5ff5df0d5e70ab1434c2751d510fdd8059a1a9a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "creatorMvoID",
              "type": "string"
            }
          ],
          "name": "MVOPoolDeleted",
          "type": "event"
        },
        "0xa505781a5116eef5a80d5b66d75962b0569fae3a78ad4bbb9f70a67da73b61c9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "mvoID",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "stakingQuantum",
              "type": "uint256"
            }
          ],
          "name": "MVOStakeUpdated",
          "type": "event"
        },
        "0x5d7ee3a2caa09465a672230cd161ff80d4c30aa4f31bd8f3e03249d859d24a2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newProtocol",
              "type": "address"
            }
          ],
          "name": "MVOStaking_ProtocolUpdated",
          "type": "event"
        },
        "0x95c2d1682da1c94cf72722155675f023c7e909538f90354357762bd45925ea70": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "MVOStaking_Staked",
          "type": "event"
        },
        "0x54e8265d924142b11826bd303e79a36db5df2ce53901fd41c19e40008818a35a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "MVOStaking_Unstaked",
          "type": "event"
        },
        "0xcf33f5de1ef67e6e5ec8006d8cff0400a249c994a029dea6b1926a58c8024546": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "mvoID",
              "type": "string"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "listenURI",
                  "type": "string"
                },
                {
                  "internalType": "address payable",
                  "name": "stakingAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "signingAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "encrPubkey",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "stakingQuantum",
                  "type": "uint256"
                },
                {
                  "internalType": "uint120",
                  "name": "memberPoolId",
                  "type": "uint120"
                },
                {
                  "internalType": "uint120",
                  "name": "rating",
                  "type": "uint120"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                }
              ],
              "indexed": false,
              "internalType": "struct MVOStaking.MVO",
              "name": "updatedMVO",
              "type": "tuple"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "MVOStatusChanged",
          "type": "event"
        },
        "0xf4045d7dd317de89564c3f12c35961242ed2a4dce3ae4e7a75847ffa04bb0834": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newMinStake",
              "type": "uint256"
            }
          ],
          "name": "MinimumStakeUpdated",
          "type": "event"
        },
        "0x2292e1cf0767804f0c9d4e1f6a5c721c2e11d13a76402bc549936f0f5a27af6a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "PointsAwarded",
          "type": "event"
        },
        "0x727ff814ae487612c4f2a334a45b1ffd2142f287950070c6d0eb667beaecf979": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "botAddress",
              "type": "address"
            }
          ],
          "name": "PointsBotUpdated",
          "type": "event"
        },
        "0xc3b6eea41a8033c9dffd641ba61665d9b9d5d33a3e2db4bb87952eff9d02d88d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "PointsReduced",
          "type": "event"
        },
        "0x9969f40ab26a744c07f08a9a272e0e8e5a8485a11a4b0e524453a08ed4f90a7f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "newPoolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "oldPoolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "memberMvoID",
              "type": "string"
            }
          ],
          "name": "PoolMembershipUpdated",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xF8017ae65F2cE39B07244e54eCa9Ec640f558C8A",
      "transactionHash": "0xae27134f740c5bfabc1b8afedeed21bdca476a58989b7ba612f5d11852242e63"
    },
    "1337": {
      "events": {
        "0xe64e12d565716cb1d472831954a8aa6b8f660bd3d1ac40f26d0484b74061ee9b": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "newCodeHash",
              "type": "bytes32"
            }
          ],
          "name": "CodeHashChanged",
          "type": "event"
        },
        "0x588475b865c1e30d6d4caa2e0da2b4009157a04d3f2ab7d0d3b3aa08f985ef83": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "dues",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "creatorMvoID",
              "type": "string"
            }
          ],
          "name": "MVOPoolCreated",
          "type": "event"
        },
        "0xed2863a3907531988ef6702ca5ff5df0d5e70ab1434c2751d510fdd8059a1a9a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "creatorMvoID",
              "type": "string"
            }
          ],
          "name": "MVOPoolDeleted",
          "type": "event"
        },
        "0xa505781a5116eef5a80d5b66d75962b0569fae3a78ad4bbb9f70a67da73b61c9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "mvoID",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "stakingQuantum",
              "type": "uint256"
            }
          ],
          "name": "MVOStakeUpdated",
          "type": "event"
        },
        "0x5d7ee3a2caa09465a672230cd161ff80d4c30aa4f31bd8f3e03249d859d24a2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newProtocol",
              "type": "address"
            }
          ],
          "name": "MVOStaking_ProtocolUpdated",
          "type": "event"
        },
        "0x95c2d1682da1c94cf72722155675f023c7e909538f90354357762bd45925ea70": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "MVOStaking_Staked",
          "type": "event"
        },
        "0x54e8265d924142b11826bd303e79a36db5df2ce53901fd41c19e40008818a35a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "MVOStaking_Unstaked",
          "type": "event"
        },
        "0xcf33f5de1ef67e6e5ec8006d8cff0400a249c994a029dea6b1926a58c8024546": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "mvoID",
              "type": "string"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "listenURI",
                  "type": "string"
                },
                {
                  "internalType": "address payable",
                  "name": "stakingAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "signingAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "encrPubkey",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "stakingQuantum",
                  "type": "uint256"
                },
                {
                  "internalType": "uint120",
                  "name": "memberPoolId",
                  "type": "uint120"
                },
                {
                  "internalType": "uint120",
                  "name": "rating",
                  "type": "uint120"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                }
              ],
              "indexed": false,
              "internalType": "struct MVOStaking.MVO",
              "name": "updatedMVO",
              "type": "tuple"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "MVOStatusChanged",
          "type": "event"
        },
        "0xf4045d7dd317de89564c3f12c35961242ed2a4dce3ae4e7a75847ffa04bb0834": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newMinStake",
              "type": "uint256"
            }
          ],
          "name": "MinimumStakeUpdated",
          "type": "event"
        },
        "0x900825d4808e50002c1a3614c809eb06d2d7142338f0dec06ed9a4057c8a8c99": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "PointsAwarded",
          "type": "event"
        },
        "0xc3b6eea41a8033c9dffd641ba61665d9b9d5d33a3e2db4bb87952eff9d02d88d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "PointsReduced",
          "type": "event"
        },
        "0x9969f40ab26a744c07f08a9a272e0e8e5a8485a11a4b0e524453a08ed4f90a7f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "newPoolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "oldPoolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "memberMvoID",
              "type": "string"
            }
          ],
          "name": "PoolMembershipUpdated",
          "type": "event"
        },
        "0x2292e1cf0767804f0c9d4e1f6a5c721c2e11d13a76402bc549936f0f5a27af6a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "PointsAwarded",
          "type": "event"
        },
        "0x727ff814ae487612c4f2a334a45b1ffd2142f287950070c6d0eb667beaecf979": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "botAddress",
              "type": "address"
            }
          ],
          "name": "PointsBotUpdated",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x17Bbbb7A533E78a92096597451dd54887CcB2C58",
      "transactionHash": "0x52a5391d51b696d1af64e937d91a0153430a55c6a630336c21c72aedbeaaac77"
    },
    "11155111": {
      "events": {
        "0xe64e12d565716cb1d472831954a8aa6b8f660bd3d1ac40f26d0484b74061ee9b": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "newCodeHash",
              "type": "bytes32"
            }
          ],
          "name": "CodeHashChanged",
          "type": "event"
        },
        "0x588475b865c1e30d6d4caa2e0da2b4009157a04d3f2ab7d0d3b3aa08f985ef83": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "dues",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "creatorMvoID",
              "type": "string"
            }
          ],
          "name": "MVOPoolCreated",
          "type": "event"
        },
        "0xed2863a3907531988ef6702ca5ff5df0d5e70ab1434c2751d510fdd8059a1a9a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "poolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "creatorMvoID",
              "type": "string"
            }
          ],
          "name": "MVOPoolDeleted",
          "type": "event"
        },
        "0xa505781a5116eef5a80d5b66d75962b0569fae3a78ad4bbb9f70a67da73b61c9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "mvoID",
              "type": "string"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "stakingQuantum",
              "type": "uint256"
            }
          ],
          "name": "MVOStakeUpdated",
          "type": "event"
        },
        "0x5d7ee3a2caa09465a672230cd161ff80d4c30aa4f31bd8f3e03249d859d24a2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newProtocol",
              "type": "address"
            }
          ],
          "name": "MVOStaking_ProtocolUpdated",
          "type": "event"
        },
        "0x95c2d1682da1c94cf72722155675f023c7e909538f90354357762bd45925ea70": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "MVOStaking_Staked",
          "type": "event"
        },
        "0x54e8265d924142b11826bd303e79a36db5df2ce53901fd41c19e40008818a35a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "name": "MVOStaking_Unstaked",
          "type": "event"
        },
        "0xcf33f5de1ef67e6e5ec8006d8cff0400a249c994a029dea6b1926a58c8024546": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "string",
              "name": "mvoID",
              "type": "string"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "listenURI",
                  "type": "string"
                },
                {
                  "internalType": "address payable",
                  "name": "stakingAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "signingAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "encrPubkey",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "stakingQuantum",
                  "type": "uint256"
                },
                {
                  "internalType": "uint120",
                  "name": "memberPoolId",
                  "type": "uint120"
                },
                {
                  "internalType": "uint120",
                  "name": "rating",
                  "type": "uint120"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                }
              ],
              "indexed": false,
              "internalType": "struct MVOStaking.MVO",
              "name": "updatedMVO",
              "type": "tuple"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "MVOStatusChanged",
          "type": "event"
        },
        "0xf4045d7dd317de89564c3f12c35961242ed2a4dce3ae4e7a75847ffa04bb0834": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newMinStake",
              "type": "uint256"
            }
          ],
          "name": "MinimumStakeUpdated",
          "type": "event"
        },
        "0x900825d4808e50002c1a3614c809eb06d2d7142338f0dec06ed9a4057c8a8c99": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "PointsAwarded",
          "type": "event"
        },
        "0xc3b6eea41a8033c9dffd641ba61665d9b9d5d33a3e2db4bb87952eff9d02d88d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "PointsReduced",
          "type": "event"
        },
        "0x9969f40ab26a744c07f08a9a272e0e8e5a8485a11a4b0e524453a08ed4f90a7f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "newPoolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "oldPoolId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "memberMvoID",
              "type": "string"
            }
          ],
          "name": "PoolMembershipUpdated",
          "type": "event"
        },
        "0x2292e1cf0767804f0c9d4e1f6a5c721c2e11d13a76402bc549936f0f5a27af6a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "mvoAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            }
          ],
          "name": "PointsAwarded",
          "type": "event"
        },
        "0x727ff814ae487612c4f2a334a45b1ffd2142f287950070c6d0eb667beaecf979": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "botAddress",
              "type": "address"
            }
          ],
          "name": "PointsBotUpdated",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xbe88Fe067D7D363C6f9435278ba2fa0d6fBF481A",
      "transactionHash": "0x3ac4bbe642aedac15dcf988097f93a0663f9f06555a5dec8c774f4ef8944cc6f"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-08T03:54:57.840Z",
  "networkType": "ethereum",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "awardPoints(string[])": {
        "details": "uses idToMVO mapping to determine the committee MVO staking addresses; sigs not currently checked since only enshroudProtocol can call this method, and every invocation is preceeded by a call to checkMVOSig(); Reentrant-protected by each function in EnshroudProtocol which is able to call this function",
        "params": {
          "_mvoIDs": ": IDs of MVOs for the transaction"
        }
      },
      "checkMVO(string)": {
        "params": {
          "_mvoID": ": ID of MVO to access relevant struct containing MVO information"
        }
      },
      "checkMVOSig(string,bytes,bytes32)": {
        "params": {
          "_mvoID": ": ID of MVO to access relevant struct containing MVO information",
          "_mvoSig": ": signature of MVO to check against its ID using the idToMVO mapping",
          "_obHash": ": keccak256 hash of the Operations Block"
        }
      },
      "claim(string)": {
        "details": "entire 'pointsBalance' of msg.sender is redeemed - claiming a partial balance is not supported for efficiency as it is generally more advantageous to claim as soon as possibleclaimable mint amount updates linearly by block.number within each applicable year",
        "params": {
          "_mvoID": ": MVO ID of msg.sender"
        }
      },
      "constructor": {
        "params": {
          "_enshroudProtocol": ": Enshroud Protocol contract address",
          "_enshroudToken": ": $ENSHROUD token contract address. Immutable.",
          "_minStake": ": initial minimum staked amount of enshroudToken required for a signing MVO",
          "_timelockManager": ": contract address for $ENSHROUD token timelock manager. Immutable."
        }
      },
      "createMVOPool(uint256,uint256,string)": {
        "details": "to prevent dues dodging, user must claim any points first",
        "params": {
          "_dues": ": amount of dues required to be a pool member, in 18 decimals (which also corresponds to wei). Must be < 5e17 (< 50%). 5e16 corresponds to 5%.",
          "_miningPoolId": ": unique ID of prospective MVO pool. Cannot be 0 -- this is the default value and indicates an MVO is not in a pool in its MVO struct",
          "_mvoID": ": MVO ID of msg.sender"
        }
      },
      "deleteMVOPool(uint256,string)": {
        "params": {
          "_miningPoolId": ": msg.sender's MVO pool ID",
          "_mvoID": ": MVO ID of msg.sender"
        }
      },
      "importPoints(uint256,string[],uint256[])": {
        "details": "used to migrate points earned by MVOs on other chains to mainnet where staking and point claims actually take place",
        "params": {
          "_chainId": ": the chain the bot is importing the points from",
          "_mvoIDs": ": IDs of MVOs for which points are being imported",
          "_points": ": number of points for each listed MVO"
        }
      },
      "reducePoints(string,uint256)": {
        "params": {
          "_mvoID": ": ID of MVO whose points are being reduced",
          "_points": ": amount of points being subtracted from the relevant MVO's 'pointsBalance'"
        }
      },
      "stake(string,uint256)": {
        "details": "updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender",
        "params": {
          "_amount": ": amount to be staked",
          "_mvoID": ": MVO ID of msg.sender"
        }
      },
      "stakeTimelock(string,uint256,address,uint128,uint128)": {
        "details": "updates 'totalStake' and 'stakingQuantum' MVO struct member for '_staker'one timelock per '_staker' at a time, though a further amount may be added to 'timelocks[_staker]' if the MVO owner consolidates multiple timelocks. nonReentrant modifier unnecessary here as it is already present in 'withdrawTimelockToMVOStaking()' in TimelockManager contract, which is the only permitted caller of this function",
        "params": {
          "_amount": ": amount to be staked",
          "_mvoID": ": MVO ID of '_staker'",
          "_releaseEnd": ": ending block number of timelock",
          "_releaseStart": ": starting block number of timelock",
          "_staker": ": address of timelock beneficiary corresponding to '_mvoID' that will call the initiating function in 'timelockManager'"
        }
      },
      "stakeWithPermit(string,uint256,uint256,uint8,bytes32,bytes32)": {
        "details": "updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.sender",
        "params": {
          "_amount": ": amount to be staked",
          "_deadline": ": block limit by which permit must be used",
          "_mvoID": ": MVO ID of msg.sender",
          "r": "- ECDSA sig param",
          "s": "- ECDSA sig param",
          "v": "- ECDSA sig param"
        }
      },
      "updateCodeHash(bytes32)": {
        "details": "admin should apprise users of how to verify the 'codeHash' -- the 'codeHash' is publicly accessible via getter as a public storage variable",
        "params": {
          "_newCodeHash": ": new bytes32 hash of the off-chain codebase or location"
        }
      },
      "updateMVOPoolMembership(uint256,string)": {
        "details": "to prevent dues dodging, user must claim any points first",
        "params": {
          "_mvoID": ": MVO ID of msg.sender",
          "_newMiningPoolId": ": pool ID which msg.sender desires to join; pass 0 to leave a pool without a replacement"
        }
      },
      "updateMinStake(uint256)": {
        "params": {
          "_newMinStake": ": new minimum amount of $ENSHROUD tokens required for a MVO to stake"
        }
      },
      "updateMvoStatus(string,(string,address,address,string,uint256,uint120,uint120,bool))": {
        "details": "single admin used here for ease and reversibility of any malicious or mistaken update",
        "params": {
          "_mvo": ": new or replacement MVO struct for the given ID",
          "_mvoID": ": string ID for a given MVO"
        }
      },
      "updatePointsBot(address)": {
        "params": {
          "_newBot": ": new bot authorized to import points from other chains"
        }
      },
      "updateProtocol(address)": {
        "params": {
          "_newProtocol": ": new Enshroud Protocol contract address, changing 'enshroudProtocol'; must correctly implement public 'adminStatus[]' mapping"
        }
      },
      "withdraw(string,uint256)": {
        "details": "updates 'totalStake' and 'stakingQuantum' MVO struct member for msg.senderstake can only be withdrawn if msg.sender's '_mvoID' is correct; if msg.sender's MVO struct is maliciously altered by an admin, will need to be corrected",
        "params": {
          "_amount": ": amount to be withdrawn",
          "_mvoID": ": MVO ID of msg.sender"
        }
      }
    },
    "stateVariables": {
      "BLOCKS_PER_YEAR": {
        "details": "this must be altered for deployments on other chains"
      },
      "DECIMALS": {
        "details": "18 decimal token calculations"
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "awardPoints(string[])": {
        "notice": "award a lead MVO (3 points) and committee MVOs (1 point each) for each processed transaction, only callable by the protocol contract"
      },
      "checkMVO(string)": {
        "notice": "check an MVO's struct and ensure it has at least 'minStake' tokens and is active"
      },
      "checkMVOSig(string,bytes,bytes32)": {
        "notice": "check an MVO's signature against its ID and verify signature - will revert if not"
      },
      "claim(string)": {
        "notice": "for an MVO to claim their mint reward. Amount of reward is based on the ratio of msg.sender's 'pointsBalance[]' compared to 'totalPoints' at the time of claim, minus any pool dues"
      },
      "codeHash()": {
        "notice": "hash of off-chain codebase (i.e. MVO/Auditor node) location, or codebase in its entirety, for user verification. Provided by admin."
      },
      "createMVOPool(uint256,uint256,string)": {
        "notice": "for an MVO to create an MVO pool -- msg.sender will be 'poolAddress'. Cannot be altered after creation; only option is to delete pool and start another with a new 'miningPoolId'"
      },
      "deleteMVOPool(uint256,string)": {
        "notice": "for an MVO pool creator to delete their pool"
      },
      "enshroudProtocols(uint256)": {
        "notice": "Enshroud protocol addresses (to support V1, V2, etc.)"
      },
      "enshroudToken()": {
        "notice": "$ENSHROUD token contract address, immutable"
      },
      "genesisBlock()": {
        "notice": "block starting point for epoch calculations"
      },
      "idToMVO(string)": {
        "notice": "maps an MVO's mvoId to corresponding MVO struct"
      },
      "idToMVOPool(uint256)": {
        "notice": "maps an MVOPoolId to its corresponding MVOPool struct"
      },
      "importPoints(uint256,string[],uint256[])": {
        "notice": "this method is only relevant on Eth mainnet, callable by bot"
      },
      "minStake()": {
        "notice": "minimum amount of stake required for an active MVO"
      },
      "mvoIds(uint256)": {
        "notice": "for the MVO selection algorithm"
      },
      "mvoIdsIndex(string)": {
        "notice": "maps an mvoId to its index number ('mvoIndex') in the 'mvoIds' array"
      },
      "mvoIndex()": {
        "notice": "counter for 'mvoIds' array index via 'mvoIdsIndex' mapping"
      },
      "pointsBalance(address)": {
        "notice": "MVO staking address mapped to current points balance"
      },
      "protoIndex()": {
        "notice": "counter for enshroudProtocols array, set to index of latest deployed Enshroud protocol"
      },
      "stake(string,uint256)": {
        "notice": "for an MVO to stake their tokens; must first approve address(this) for '_amount'"
      },
      "stakeTimelock(string,uint256,address,uint128,uint128)": {
        "notice": "for the 'timelockManager' (by user calling 'withdrawTimelockToMVOStaking()' in TimelockManager contract) to stake $ENSHROUD tokens in this address on behalf of the timelock beneficiary ('_staker'), who is an MVO operator."
      },
      "stakeWithPermit(string,uint256,uint256,uint8,bytes32,bytes32)": {
        "notice": "for an MVO to stake their tokens in this address using permit()"
      },
      "timelockManager()": {
        "notice": "TimelockManager contract address"
      },
      "timelocks(address)": {
        "notice": "maps a timelock beneficiary address to their Timelock struct"
      },
      "totalPoints()": {
        "notice": "total amount of awarded points outstanding, used to calculate relative pointsBalance for a given MVO when claiming reward mint"
      },
      "totalStake()": {
        "notice": "total amount of staked tokens, used to calculate relative staking amount for a given MVO in selection mechanism"
      },
      "updateCodeHash(bytes32)": {
        "notice": "update 'codeHash', designating a new hash of the off-chain codebase storage location reference or entire codebase, for user verification"
      },
      "updateMVOPoolMembership(uint256,string)": {
        "notice": "for an MVO to join an existing MVO mining pool, change pool membership, or leave a pool"
      },
      "updateMinStake(uint256)": {
        "notice": "update 'minStake', designating a new minimum stake amount of $ENSHROUD tokens for MVOs, after three admins have called"
      },
      "updateMvoStatus(string,(string,address,address,string,uint256,uint120,uint120,bool))": {
        "notice": "for a single admin to designate, update, or revoke an MVO's config struct using its ID"
      },
      "updatePointsBot(address)": {
        "notice": "set or update 'pointsBot' a new bot address authorized to import MVO points awarded on other chains (relevant only on mainnet contract deployment)"
      },
      "updateProtocol(address)": {
        "notice": "update 'enshroudProtocol' a new protocol address, such as for a v2 upgrade, after three admins have called"
      },
      "withdraw(string,uint256)": {
        "notice": "for an MVO to withdraw its staked $ENSHROUD tokens"
      },
      "yearToTokensRemaining(uint256)": {
        "notice": "maps year to the amount of MVO incentive tokens remaining for reward mint in such year"
      }
    },
    "version": 1
  }
}