{
  "contractName": "EVMScriptRunner",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"hasInitialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_script\",\"type\":\"bytes\"}],\"name\":\"getEVMScriptExecutor\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"appId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitializationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEVMScriptRegistry\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kernel\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"script\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"input\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"ScriptResult\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"getInitializationBlock()\":{\"return\":\"Block number in which the contract was initialized\"},\"hasInitialized()\":{\"return\":\"Whether the contract has been initialized by the time of the current block\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/evmscript/EVMScriptRunner.sol\":\"EVMScriptRunner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/acl/IACL.sol\":{\"keccak256\":\"0xe3492bc29d2482e65d2e39c96487b5388f6181f6bcdc6fe6329b8206b84c0cf1\",\"urls\":[\"bzzr://3af0b7e423c7ff4100a3b5868203ec169c866328f2d93d3b6a2111e916cdc411\"]},\"@aragon/os/contracts/apps/AppStorage.sol\":{\"keccak256\":\"0xb1c8eb71d1bdfe1241cc1714b280b46bbfc5bcb1e8499d42c24d3f5f5e8130f1\",\"urls\":[\"bzzr://503beec9e0e19834cb685a1d037eb9caaa412e3709d90bf6e53f51d143d58029\"]},\"@aragon/os/contracts/common/IVaultRecoverable.sol\":{\"keccak256\":\"0xd7cb66ee5d01be69a6abab04583cc86755bf63c2f1fd03b519a876162f52b323\",\"urls\":[\"bzzr://acb75e2637639bbc83b95032a822a54a588889f203b188e97cd78292cc0ee7f5\"]},\"@aragon/os/contracts/common/Initializable.sol\":{\"keccak256\":\"0xc559fdbee1c0ee18b6f2f866c28ed6eb96859b2c88f75867ca11f25ebd00b090\",\"urls\":[\"bzzr://3d3bca8b35030fc12f94bb52a162be9520868b27ff2cb32f09179d67b6ffdf93\"]},\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]},\"@aragon/os/contracts/common/UnstructuredStorage.sol\":{\"keccak256\":\"0xe0d627fc7a7716409389f34cfe49366ba7871309d3a73262ec9608ef73e47591\",\"urls\":[\"bzzr://9742204494402cdecc66b266f0e420fcfe2677ba710db7651c40f96a63940bef\"]},\"@aragon/os/contracts/evmscript/EVMScriptRunner.sol\":{\"keccak256\":\"0xcb6b5f7d2610321882cdc86819f1a51341c33b510fff7c60936ac7d7a015d7be\",\"urls\":[\"bzzr://bc430c1487d75909dc059de848123822c257ea9e7c812a7252c10986be253e21\"]},\"@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol\":{\"keccak256\":\"0x9cab64cd2f10148d4e20433ecd11679e69be1fbde112892c48db94f92e48c571\",\"urls\":[\"bzzr://b4bf9f4fc41e6e7791a84d0847410677fc0066ed393872186d90f819f5f22cc0\"]},\"@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol\":{\"keccak256\":\"0x00d98507ec160cb7cc814cc9bdebd01a414353636d6045720fe6d1592277694b\",\"urls\":[\"bzzr://170505211d1846fe24b89cfceea7f5b59a587527f68f89e8f36fed8e08b02db4\"]},\"@aragon/os/contracts/kernel/IKernel.sol\":{\"keccak256\":\"0xd02b98282ccd271b0caa86f2c249986f1619dcf41811f5dadce520b32610b68e\",\"urls\":[\"bzzr://e77000fc50cf4cfb160518af1cfb612e6cbbc06cb4357b1e03ff492fd17d8d2e\"]},\"@aragon/os/contracts/kernel/KernelConstants.sol\":{\"keccak256\":\"0x95e46be2becfb4c8952880909cd32adf5dcfa8c2e0fdf4ae054bbf83ef7f53cd\",\"urls\":[\"bzzr://68d3ce6cda841600d1e5724c0752314a084e4eeebc1fdcb6bc22c92d77c9a3db\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5061043e806100206000396000f3006080604052600436106100775763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461007c5780632914b9bd146100a557806380afdea8146101275780638b3dd7491461014e578063a479e50814610163578063d4aae0c414610178575b600080fd5b34801561008857600080fd5b5061009161018d565b604080519115158252519081900360200190f35b3480156100b157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100fe9436949293602493928401919081908401838280828437509497506101b69650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561013357600080fd5b5061013c6102c2565b60408051918252519081900360200190f35b34801561015a57600080fd5b5061013c6102f2565b34801561016f57600080fd5b506100fe61031d565b34801561018457600080fd5b506100fe6103df565b6000806101986102f2565b905080158015906101b05750806101ad61040a565b10155b91505090565b60006101c061031d565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561024457818101518382015260200161022c565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b505050506040513d60208110156102ba57600080fd5b505192915050565b60006102ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61040e565b905090565b60006102ed7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e61040e565b6000806103286103df565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561029057600080fd5b60006102ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61040e565b4390565b54905600a165627a7a72305820cc3974bb373b20c68d9d38e5662eb330134cf93b21e3f1b51d1698267b3f39630029",
  "deployedBytecode": "0x6080604052600436106100775763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461007c5780632914b9bd146100a557806380afdea8146101275780638b3dd7491461014e578063a479e50814610163578063d4aae0c414610178575b600080fd5b34801561008857600080fd5b5061009161018d565b604080519115158252519081900360200190f35b3480156100b157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100fe9436949293602493928401919081908401838280828437509497506101b69650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561013357600080fd5b5061013c6102c2565b60408051918252519081900360200190f35b34801561015a57600080fd5b5061013c6102f2565b34801561016f57600080fd5b506100fe61031d565b34801561018457600080fd5b506100fe6103df565b6000806101986102f2565b905080158015906101b05750806101ad61040a565b10155b91505090565b60006101c061031d565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561024457818101518382015260200161022c565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b505050506040513d60208110156102ba57600080fd5b505192915050565b60006102ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61040e565b905090565b60006102ed7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e61040e565b6000806103286103df565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561029057600080fd5b60006102ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61040e565b4390565b54905600a165627a7a72305820cc3974bb373b20c68d9d38e5662eb330134cf93b21e3f1b51d1698267b3f39630029",
  "sourceMap": "254:4465:40:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;254:4465:40;;;;;;;",
  "deployedSourceMap": "254:4465:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:30;;;;;;;;;;;;;;;;;;;;;;795:179:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:40;;-1:-1:-1;795:179:40;;-1:-1:-1;;;;;;;795:179:40;;;;;;;;;;;;;;;;;;;;796:106:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:20;;;;;;;;;;;;;;;;;;;;881:137:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:30;;;;980:231:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:40;;;;674:116:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:20;;;;1128:208:30;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:30;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;795:179:40:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;917:49:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:40;;795:179;-1:-1:-1;;795:179:40:o;796:106:20:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;881:137:30:-;936:7;962:49;345:66;962:47;:49::i;980:231:40:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:51;1086:69:40;;;;330:66:42;1086:69:40;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;674:116:20;713:7;747:35;485:66;747:33;:35::i;347:94:35:-;422:12;347:94;:::o;379:134:37:-;490:15;;480:27::o",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\nimport \"./IEVMScriptExecutor.sol\";\nimport \"./IEVMScriptRegistry.sol\";\n\nimport \"../apps/AppStorage.sol\";\nimport \"../kernel/KernelConstants.sol\";\nimport \"../common/Initializable.sol\";\n\n\ncontract EVMScriptRunner is AppStorage, Initializable, EVMScriptRegistryConstants, KernelNamespaceConstants {\n    string private constant ERROR_EXECUTOR_UNAVAILABLE = \"EVMRUN_EXECUTOR_UNAVAILABLE\";\n    string private constant ERROR_PROTECTED_STATE_MODIFIED = \"EVMRUN_PROTECTED_STATE_MODIFIED\";\n\n    /* This is manually crafted in assembly\n    string private constant ERROR_EXECUTOR_INVALID_RETURN = \"EVMRUN_EXECUTOR_INVALID_RETURN\";\n    */\n\n    event ScriptResult(address indexed executor, bytes script, bytes input, bytes returnData);\n\n    function getEVMScriptExecutor(bytes _script) public view returns (IEVMScriptExecutor) {\n        return IEVMScriptExecutor(getEVMScriptRegistry().getScriptExecutor(_script));\n    }\n\n    function getEVMScriptRegistry() public view returns (IEVMScriptRegistry) {\n        address registryAddr = kernel().getApp(KERNEL_APP_ADDR_NAMESPACE, EVMSCRIPT_REGISTRY_APP_ID);\n        return IEVMScriptRegistry(registryAddr);\n    }\n\n    function runScript(bytes _script, bytes _input, address[] _blacklist)\n        internal\n        isInitialized\n        protectState\n        returns (bytes)\n    {\n        IEVMScriptExecutor executor = getEVMScriptExecutor(_script);\n        require(address(executor) != address(0), ERROR_EXECUTOR_UNAVAILABLE);\n\n        bytes4 sig = executor.execScript.selector;\n        bytes memory data = abi.encodeWithSelector(sig, _script, _input, _blacklist);\n\n        bytes memory output;\n        assembly {\n            let success := delegatecall(\n                gas,                // forward all gas\n                executor,           // address\n                add(data, 0x20),    // calldata start\n                mload(data),        // calldata length\n                0,                  // don't write output (we'll handle this ourselves)\n                0                   // don't write output\n            )\n\n            output := mload(0x40) // free mem ptr get\n\n            switch success\n            case 0 {\n                // If the call errored, forward its full error data\n                returndatacopy(output, 0, returndatasize)\n                revert(output, returndatasize)\n            }\n            default {\n                switch gt(returndatasize, 0x3f)\n                case 0 {\n                    // Need at least 0x40 bytes returned for properly ABI-encoded bytes values,\n                    // revert with \"EVMRUN_EXECUTOR_INVALID_RETURN\"\n                    // See remix: doing a `revert(\"EVMRUN_EXECUTOR_INVALID_RETURN\")` always results in\n                    // this memory layout\n                    mstore(output, 0x08c379a000000000000000000000000000000000000000000000000000000000)         // error identifier\n                    mstore(add(output, 0x04), 0x0000000000000000000000000000000000000000000000000000000000000020) // starting offset\n                    mstore(add(output, 0x24), 0x000000000000000000000000000000000000000000000000000000000000001e) // reason length\n                    mstore(add(output, 0x44), 0x45564d52554e5f4558454355544f525f494e56414c49445f52455455524e0000) // reason\n\n                    revert(output, 100) // 100 = 4 + 3 * 32 (error identifier + 3 words for the ABI encoded error)\n                }\n                default {\n                    // Copy result\n                    //\n                    // Needs to perform an ABI decode for the expected `bytes` return type of\n                    // `executor.execScript()` as solidity will automatically ABI encode the returned bytes as:\n                    //    [ position of the first dynamic length return value = 0x20 (32 bytes) ]\n                    //    [ output length (32 bytes) ]\n                    //    [ output content (N bytes) ]\n                    //\n                    // Perform the ABI decode by ignoring the first 32 bytes of the return data\n                    let copysize := sub(returndatasize, 0x20)\n                    returndatacopy(output, 0x20, copysize)\n\n                    mstore(0x40, add(output, copysize)) // free mem ptr set\n                }\n            }\n        }\n\n        emit ScriptResult(address(executor), _script, _input, output);\n\n        return output;\n    }\n\n    modifier protectState {\n        address preKernel = address(kernel());\n        bytes32 preAppId = appId();\n        _; // exec\n        require(address(kernel()) == preKernel, ERROR_PROTECTED_STATE_MODIFIED);\n        require(appId() == preAppId, ERROR_PROTECTED_STATE_MODIFIED);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
    "exportedSymbols": {
      "EVMScriptRunner": [
        7454
      ]
    },
    "id": 7455,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7290,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:40"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 7291,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 7475,
        "src": "70:34:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 7292,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 7502,
        "src": "105:34:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "../apps/AppStorage.sol",
        "id": 7293,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 5997,
        "src": "141:32:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "../kernel/KernelConstants.sol",
        "id": 7294,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 8746,
        "src": "174:39:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
        "file": "../common/Initializable.sol",
        "id": 7295,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 6442,
        "src": "214:37:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7296,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5996,
              "src": "282:10:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$5996",
                "typeString": "contract AppStorage"
              }
            },
            "id": 7297,
            "nodeType": "InheritanceSpecifier",
            "src": "282:10:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7298,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6441,
              "src": "294:13:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$6441",
                "typeString": "contract Initializable"
              }
            },
            "id": 7299,
            "nodeType": "InheritanceSpecifier",
            "src": "294:13:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7300,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7481,
              "src": "309:26:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$7481",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 7301,
            "nodeType": "InheritanceSpecifier",
            "src": "309:26:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7302,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8745,
              "src": "337:24:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$8745",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 7303,
            "nodeType": "InheritanceSpecifier",
            "src": "337:24:40"
          }
        ],
        "contractDependencies": [
          5996,
          6441,
          6831,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7454,
        "linearizedBaseContracts": [
          7454,
          8745,
          7481,
          6441,
          6831,
          5996
        ],
        "name": "EVMScriptRunner",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 7306,
            "name": "ERROR_EXECUTOR_UNAVAILABLE",
            "nodeType": "VariableDeclaration",
            "scope": 7454,
            "src": "368:82:40",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7304,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:40",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f4558454355544f525f554e415641494c41424c45",
              "id": 7305,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "421:29:40",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8eaa9277b7a571cc4e32be0346d713d2afa465c007646deacfabeba4f629e0be",
                "typeString": "literal_string \"EVMRUN_EXECUTOR_UNAVAILABLE\""
              },
              "value": "EVMRUN_EXECUTOR_UNAVAILABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7309,
            "name": "ERROR_PROTECTED_STATE_MODIFIED",
            "nodeType": "VariableDeclaration",
            "scope": 7454,
            "src": "456:90:40",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7307,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "456:6:40",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f50524f5445435445445f53544154455f4d4f444946494544",
              "id": 7308,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "513:33:40",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_93fe2db835b78d0be70801a075eae0aab8d5496824b1a06caec0dd78db98ba92",
                "typeString": "literal_string \"EVMRUN_PROTECTED_STATE_MODIFIED\""
              },
              "value": "EVMRUN_PROTECTED_STATE_MODIFIED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7319,
            "name": "ScriptResult",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7311,
                  "indexed": true,
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "718:24:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7310,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7313,
                  "indexed": false,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "744:12:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7312,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7315,
                  "indexed": false,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "758:11:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7314,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "758:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7317,
                  "indexed": false,
                  "name": "returnData",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "771:16:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7316,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "771:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "717:71:40"
            },
            "src": "699:90:40"
          },
          {
            "body": {
              "id": 7334,
              "nodeType": "Block",
              "src": "881:93:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7330,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7321,
                            "src": "958:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 7327,
                              "name": "getEVMScriptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7354,
                              "src": "917:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IEVMScriptRegistry_$7501_$",
                                "typeString": "function () view returns (contract IEVMScriptRegistry)"
                              }
                            },
                            "id": 7328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "917:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                              "typeString": "contract IEVMScriptRegistry"
                            }
                          },
                          "id": 7329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getScriptExecutor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7500,
                          "src": "917:40:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$7474_$",
                            "typeString": "function (bytes memory) view external returns (contract IEVMScriptExecutor)"
                          }
                        },
                        "id": 7331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "917:49:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7326,
                      "name": "IEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7474,
                      "src": "898:18:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$7474_$",
                        "typeString": "type(contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 7332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "898:69:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 7325,
                  "id": 7333,
                  "nodeType": "Return",
                  "src": "891:76:40"
                }
              ]
            },
            "documentation": null,
            "id": 7335,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7321,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7335,
                  "src": "825:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7320,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "824:15:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 7325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7324,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7335,
                  "src": "861:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7323,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7474,
                    "src": "861:18:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "860:20:40"
            },
            "scope": 7454,
            "src": "795:179:40",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7353,
              "nodeType": "Block",
              "src": "1053:158:40",
              "statements": [
                {
                  "assignments": [
                    7341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7341,
                      "name": "registryAddr",
                      "nodeType": "VariableDeclaration",
                      "scope": 7354,
                      "src": "1063:20:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7340,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1063:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7348,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7345,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "1102:25:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7346,
                        "name": "EVMSCRIPT_REGISTRY_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7480,
                        "src": "1129:25:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7342,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5959,
                          "src": "1086:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 7343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1086:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 7344,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getApp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8230,
                      "src": "1086:15:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 7347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1086:69:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1063:92:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7350,
                        "name": "registryAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7341,
                        "src": "1191:12:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7349,
                      "name": "IEVMScriptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7501,
                      "src": "1172:18:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptRegistry_$7501_$",
                        "typeString": "type(contract IEVMScriptRegistry)"
                      }
                    },
                    "id": 7351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1172:32:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 7339,
                  "id": 7352,
                  "nodeType": "Return",
                  "src": "1165:39:40"
                }
              ]
            },
            "documentation": null,
            "id": 7354,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7336,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1009:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 7339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7338,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7354,
                  "src": "1033:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                    "typeString": "contract IEVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7337,
                    "name": "IEVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7501,
                    "src": "1033:18:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1032:20:40"
            },
            "scope": 7454,
            "src": "980:231:40",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7418,
              "nodeType": "Block",
              "src": "1375:3054:40",
              "statements": [
                {
                  "assignments": [
                    7371
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7371,
                      "name": "executor",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1385:27:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7370,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7474,
                        "src": "1385:18:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7375,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7373,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7356,
                        "src": "1436:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 7372,
                      "name": "getEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7335,
                      "src": "1415:20:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$7474_$",
                        "typeString": "function (bytes memory) view returns (contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 7374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1415:29:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1385:59:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7378,
                              "name": "executor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7371,
                              "src": "1470:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            ],
                            "id": 7377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1462:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1462:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1491:1:40",
                              "subdenomination": null,
                              "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": 7380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1483:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1483:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1462:31:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7384,
                        "name": "ERROR_EXECUTOR_UNAVAILABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7306,
                        "src": "1495:26:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7376,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "1454:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1454:68:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7386,
                  "nodeType": "ExpressionStatement",
                  "src": "1454:68:40"
                },
                {
                  "assignments": [
                    7388
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7388,
                      "name": "sig",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1533:10:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 7387,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1533:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7392,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7389,
                        "name": "executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7371,
                        "src": "1546:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "id": 7390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "execScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7468,
                      "src": "1546:19:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) external returns (bytes memory)"
                      }
                    },
                    "id": 7391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1546:28:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1533:41:40"
                },
                {
                  "assignments": [
                    7394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7394,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1584:17:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7393,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1584:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7402,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7397,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7388,
                        "src": "1627:3:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7398,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7356,
                        "src": "1632:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7399,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7358,
                        "src": "1641:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7400,
                        "name": "_blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7361,
                        "src": "1649:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7395,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10391,
                        "src": "1604:3:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 7396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1604:22:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 7401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1604:56:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1584:76:40"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7404,
                      "name": "output",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1671:19:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7403,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7405,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1671:19:40"
                },
                {
                  "externalReferences": [
                    {
                      "data": {
                        "declaration": 7394,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1930:4:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "data": {
                        "declaration": 7394,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1874:4:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2136:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "executor": {
                        "declaration": 7371,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1823:8:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2845:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2980:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3113:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3244:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3365:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4185:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2326:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2376:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4247:6:40",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7406,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    let success := delegatecall(gas(), executor, add(data, 0x20), mload(data), 0, 0)\n    output := mload(0x40)\n    switch success\n    case 0 {\n        returndatacopy(output, 0, returndatasize())\n        revert(output, returndatasize())\n    }\n    default {\n        switch gt(returndatasize(), 0x3f)\n        case 0 {\n            mstore(output, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n            mstore(add(output, 0x04), 0x0000000000000000000000000000000000000000000000000000000000000020)\n            mstore(add(output, 0x24), 0x000000000000000000000000000000000000000000000000000000000000001e)\n            mstore(add(output, 0x44), 0x45564d52554e5f4558454355544f525f494e56414c49445f52455455524e0000)\n            revert(output, 100)\n        }\n        default {\n            let copysize := sub(returndatasize(), 0x20)\n            returndatacopy(output, 0x20, copysize)\n            mstore(0x40, add(output, copysize))\n        }\n    }\n}",
                  "src": "1700:2641:40"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7409,
                            "name": "executor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7371,
                            "src": "4363:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          ],
                          "id": 7408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4355:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 7410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4355:17:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7411,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7356,
                        "src": "4374:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7412,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7358,
                        "src": "4383:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7413,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7404,
                        "src": "4391:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 7407,
                      "name": "ScriptResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7319,
                      "src": "4342:12:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,bytes memory,bytes memory)"
                      }
                    },
                    "id": 7414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4342:56:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7415,
                  "nodeType": "EmitStatement",
                  "src": "4337:61:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7416,
                    "name": "output",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7404,
                    "src": "4416:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 7369,
                  "id": 7417,
                  "nodeType": "Return",
                  "src": "4409:13:40"
                }
              ]
            },
            "documentation": null,
            "id": 7419,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7364,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7363,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6383,
                  "src": "1312:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1312:13:40"
              },
              {
                "arguments": null,
                "id": 7366,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7365,
                  "name": "protectState",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 7453,
                  "src": "1334:12:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1334:12:40"
              }
            ],
            "name": "runScript",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7356,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1236:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7355,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7358,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1251:12:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7357,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1251:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7361,
                  "name": "_blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1265:20:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7359,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1265:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 7360,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1265:9:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1235:51:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 7369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7368,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1364:5:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7367,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:7:40"
            },
            "scope": 7454,
            "src": "1217:3212:40",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7452,
              "nodeType": "Block",
              "src": "4457:260:40",
              "statements": [
                {
                  "assignments": [
                    7422
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7422,
                      "name": "preKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 7453,
                      "src": "4467:17:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7421,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4467:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7427,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7424,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5959,
                          "src": "4495:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 7425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4495:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      ],
                      "id": 7423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4487:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 7426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4487:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4467:37:40"
                },
                {
                  "assignments": [
                    7429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7429,
                      "name": "preAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7453,
                      "src": "4514:16:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7428,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4514:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7432,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7430,
                      "name": "appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "4533:5:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                        "typeString": "function () view returns (bytes32)"
                      }
                    },
                    "id": 7431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4514:26:40"
                },
                {
                  "id": 7433,
                  "nodeType": "PlaceholderStatement",
                  "src": "4550:1:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7436,
                                "name": "kernel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5959,
                                "src": "4585:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                                  "typeString": "function () view returns (contract IKernel)"
                                }
                              },
                              "id": 7437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4585:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IKernel_$8231",
                                "typeString": "contract IKernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IKernel_$8231",
                                "typeString": "contract IKernel"
                              }
                            ],
                            "id": 7435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4577:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4577:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7439,
                          "name": "preKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7422,
                          "src": "4598:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4577:30:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7441,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7309,
                        "src": "4609:30:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7434,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4569:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4569:71:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7443,
                  "nodeType": "ExpressionStatement",
                  "src": "4569:71:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 7448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7445,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5969,
                            "src": "4658:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view returns (bytes32)"
                            }
                          },
                          "id": 7446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4658:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7447,
                          "name": "preAppId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7429,
                          "src": "4669:8:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4658:19:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7449,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7309,
                        "src": "4679:30:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7444,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4650:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4650:60:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7451,
                  "nodeType": "ExpressionStatement",
                  "src": "4650:60:40"
                }
              ]
            },
            "documentation": null,
            "id": 7453,
            "name": "protectState",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 7420,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4457:0:40"
            },
            "src": "4435:282:40",
            "visibility": "internal"
          }
        ],
        "scope": 7455,
        "src": "254:4465:40"
      }
    ],
    "src": "44:4676:40"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
    "exportedSymbols": {
      "EVMScriptRunner": [
        7454
      ]
    },
    "id": 7455,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7290,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:40"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 7291,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 7475,
        "src": "70:34:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 7292,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 7502,
        "src": "105:34:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "../apps/AppStorage.sol",
        "id": 7293,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 5997,
        "src": "141:32:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "../kernel/KernelConstants.sol",
        "id": 7294,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 8746,
        "src": "174:39:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
        "file": "../common/Initializable.sol",
        "id": 7295,
        "nodeType": "ImportDirective",
        "scope": 7455,
        "sourceUnit": 6442,
        "src": "214:37:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7296,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5996,
              "src": "282:10:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$5996",
                "typeString": "contract AppStorage"
              }
            },
            "id": 7297,
            "nodeType": "InheritanceSpecifier",
            "src": "282:10:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7298,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6441,
              "src": "294:13:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$6441",
                "typeString": "contract Initializable"
              }
            },
            "id": 7299,
            "nodeType": "InheritanceSpecifier",
            "src": "294:13:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7300,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7481,
              "src": "309:26:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$7481",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 7301,
            "nodeType": "InheritanceSpecifier",
            "src": "309:26:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7302,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8745,
              "src": "337:24:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$8745",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 7303,
            "nodeType": "InheritanceSpecifier",
            "src": "337:24:40"
          }
        ],
        "contractDependencies": [
          5996,
          6441,
          6831,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7454,
        "linearizedBaseContracts": [
          7454,
          8745,
          7481,
          6441,
          6831,
          5996
        ],
        "name": "EVMScriptRunner",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 7306,
            "name": "ERROR_EXECUTOR_UNAVAILABLE",
            "nodeType": "VariableDeclaration",
            "scope": 7454,
            "src": "368:82:40",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7304,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:40",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f4558454355544f525f554e415641494c41424c45",
              "id": 7305,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "421:29:40",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8eaa9277b7a571cc4e32be0346d713d2afa465c007646deacfabeba4f629e0be",
                "typeString": "literal_string \"EVMRUN_EXECUTOR_UNAVAILABLE\""
              },
              "value": "EVMRUN_EXECUTOR_UNAVAILABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7309,
            "name": "ERROR_PROTECTED_STATE_MODIFIED",
            "nodeType": "VariableDeclaration",
            "scope": 7454,
            "src": "456:90:40",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7307,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "456:6:40",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f50524f5445435445445f53544154455f4d4f444946494544",
              "id": 7308,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "513:33:40",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_93fe2db835b78d0be70801a075eae0aab8d5496824b1a06caec0dd78db98ba92",
                "typeString": "literal_string \"EVMRUN_PROTECTED_STATE_MODIFIED\""
              },
              "value": "EVMRUN_PROTECTED_STATE_MODIFIED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7319,
            "name": "ScriptResult",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7311,
                  "indexed": true,
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "718:24:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7310,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7313,
                  "indexed": false,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "744:12:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7312,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7315,
                  "indexed": false,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "758:11:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7314,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "758:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7317,
                  "indexed": false,
                  "name": "returnData",
                  "nodeType": "VariableDeclaration",
                  "scope": 7319,
                  "src": "771:16:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7316,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "771:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "717:71:40"
            },
            "src": "699:90:40"
          },
          {
            "body": {
              "id": 7334,
              "nodeType": "Block",
              "src": "881:93:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7330,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7321,
                            "src": "958:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 7327,
                              "name": "getEVMScriptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7354,
                              "src": "917:20:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IEVMScriptRegistry_$7501_$",
                                "typeString": "function () view returns (contract IEVMScriptRegistry)"
                              }
                            },
                            "id": 7328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "917:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                              "typeString": "contract IEVMScriptRegistry"
                            }
                          },
                          "id": 7329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getScriptExecutor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7500,
                          "src": "917:40:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$7474_$",
                            "typeString": "function (bytes memory) view external returns (contract IEVMScriptExecutor)"
                          }
                        },
                        "id": 7331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "917:49:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7326,
                      "name": "IEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7474,
                      "src": "898:18:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$7474_$",
                        "typeString": "type(contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 7332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "898:69:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 7325,
                  "id": 7333,
                  "nodeType": "Return",
                  "src": "891:76:40"
                }
              ]
            },
            "documentation": null,
            "id": 7335,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7321,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7335,
                  "src": "825:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7320,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "824:15:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 7325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7324,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7335,
                  "src": "861:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7323,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7474,
                    "src": "861:18:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "860:20:40"
            },
            "scope": 7454,
            "src": "795:179:40",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7353,
              "nodeType": "Block",
              "src": "1053:158:40",
              "statements": [
                {
                  "assignments": [
                    7341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7341,
                      "name": "registryAddr",
                      "nodeType": "VariableDeclaration",
                      "scope": 7354,
                      "src": "1063:20:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7340,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1063:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7348,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7345,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8744,
                        "src": "1102:25:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7346,
                        "name": "EVMSCRIPT_REGISTRY_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7480,
                        "src": "1129:25:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7342,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5959,
                          "src": "1086:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 7343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1086:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 7344,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getApp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8230,
                      "src": "1086:15:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 7347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1086:69:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1063:92:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7350,
                        "name": "registryAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7341,
                        "src": "1191:12:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7349,
                      "name": "IEVMScriptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7501,
                      "src": "1172:18:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptRegistry_$7501_$",
                        "typeString": "type(contract IEVMScriptRegistry)"
                      }
                    },
                    "id": 7351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1172:32:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 7339,
                  "id": 7352,
                  "nodeType": "Return",
                  "src": "1165:39:40"
                }
              ]
            },
            "documentation": null,
            "id": 7354,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7336,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1009:2:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 7339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7338,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7354,
                  "src": "1033:18:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                    "typeString": "contract IEVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7337,
                    "name": "IEVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7501,
                    "src": "1033:18:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1032:20:40"
            },
            "scope": 7454,
            "src": "980:231:40",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7418,
              "nodeType": "Block",
              "src": "1375:3054:40",
              "statements": [
                {
                  "assignments": [
                    7371
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7371,
                      "name": "executor",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1385:27:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7370,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7474,
                        "src": "1385:18:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7375,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7373,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7356,
                        "src": "1436:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 7372,
                      "name": "getEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7335,
                      "src": "1415:20:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$7474_$",
                        "typeString": "function (bytes memory) view returns (contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 7374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1415:29:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1385:59:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7378,
                              "name": "executor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7371,
                              "src": "1470:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            ],
                            "id": 7377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1462:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1462:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1491:1:40",
                              "subdenomination": null,
                              "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": 7380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1483:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1483:10:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1462:31:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7384,
                        "name": "ERROR_EXECUTOR_UNAVAILABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7306,
                        "src": "1495:26:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7376,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "1454:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1454:68:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7386,
                  "nodeType": "ExpressionStatement",
                  "src": "1454:68:40"
                },
                {
                  "assignments": [
                    7388
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7388,
                      "name": "sig",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1533:10:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 7387,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1533:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7392,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7389,
                        "name": "executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7371,
                        "src": "1546:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "id": 7390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "execScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7468,
                      "src": "1546:19:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) external returns (bytes memory)"
                      }
                    },
                    "id": 7391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1546:28:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1533:41:40"
                },
                {
                  "assignments": [
                    7394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7394,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1584:17:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7393,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1584:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7402,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7397,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7388,
                        "src": "1627:3:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7398,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7356,
                        "src": "1632:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7399,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7358,
                        "src": "1641:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7400,
                        "name": "_blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7361,
                        "src": "1649:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7395,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10391,
                        "src": "1604:3:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 7396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1604:22:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 7401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1604:56:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1584:76:40"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7404,
                      "name": "output",
                      "nodeType": "VariableDeclaration",
                      "scope": 7419,
                      "src": "1671:19:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7403,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7405,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1671:19:40"
                },
                {
                  "externalReferences": [
                    {
                      "data": {
                        "declaration": 7394,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1930:4:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "data": {
                        "declaration": 7394,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1874:4:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2136:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "executor": {
                        "declaration": 7371,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1823:8:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2845:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2980:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3113:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3244:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3365:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4185:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2326:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2376:6:40",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 7404,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4247:6:40",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7406,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    let success := delegatecall(gas(), executor, add(data, 0x20), mload(data), 0, 0)\n    output := mload(0x40)\n    switch success\n    case 0 {\n        returndatacopy(output, 0, returndatasize())\n        revert(output, returndatasize())\n    }\n    default {\n        switch gt(returndatasize(), 0x3f)\n        case 0 {\n            mstore(output, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n            mstore(add(output, 0x04), 0x0000000000000000000000000000000000000000000000000000000000000020)\n            mstore(add(output, 0x24), 0x000000000000000000000000000000000000000000000000000000000000001e)\n            mstore(add(output, 0x44), 0x45564d52554e5f4558454355544f525f494e56414c49445f52455455524e0000)\n            revert(output, 100)\n        }\n        default {\n            let copysize := sub(returndatasize(), 0x20)\n            returndatacopy(output, 0x20, copysize)\n            mstore(0x40, add(output, copysize))\n        }\n    }\n}",
                  "src": "1700:2641:40"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7409,
                            "name": "executor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7371,
                            "src": "4363:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          ],
                          "id": 7408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4355:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 7410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4355:17:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7411,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7356,
                        "src": "4374:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7412,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7358,
                        "src": "4383:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7413,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7404,
                        "src": "4391:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 7407,
                      "name": "ScriptResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7319,
                      "src": "4342:12:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,bytes memory,bytes memory)"
                      }
                    },
                    "id": 7414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4342:56:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7415,
                  "nodeType": "EmitStatement",
                  "src": "4337:61:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7416,
                    "name": "output",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7404,
                    "src": "4416:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 7369,
                  "id": 7417,
                  "nodeType": "Return",
                  "src": "4409:13:40"
                }
              ]
            },
            "documentation": null,
            "id": 7419,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7364,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7363,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6383,
                  "src": "1312:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1312:13:40"
              },
              {
                "arguments": null,
                "id": 7366,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7365,
                  "name": "protectState",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 7453,
                  "src": "1334:12:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1334:12:40"
              }
            ],
            "name": "runScript",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7356,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1236:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7355,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7358,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1251:12:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7357,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1251:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7361,
                  "name": "_blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1265:20:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7359,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1265:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 7360,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1265:9:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1235:51:40"
            },
            "payable": false,
            "returnParameters": {
              "id": 7369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7368,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7419,
                  "src": "1364:5:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7367,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:7:40"
            },
            "scope": 7454,
            "src": "1217:3212:40",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7452,
              "nodeType": "Block",
              "src": "4457:260:40",
              "statements": [
                {
                  "assignments": [
                    7422
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7422,
                      "name": "preKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 7453,
                      "src": "4467:17:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7421,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4467:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7427,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7424,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5959,
                          "src": "4495:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 7425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4495:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      ],
                      "id": 7423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4487:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 7426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4487:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4467:37:40"
                },
                {
                  "assignments": [
                    7429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7429,
                      "name": "preAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7453,
                      "src": "4514:16:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7428,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4514:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7432,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7430,
                      "name": "appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "4533:5:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                        "typeString": "function () view returns (bytes32)"
                      }
                    },
                    "id": 7431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4514:26:40"
                },
                {
                  "id": 7433,
                  "nodeType": "PlaceholderStatement",
                  "src": "4550:1:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 7436,
                                "name": "kernel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5959,
                                "src": "4585:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                                  "typeString": "function () view returns (contract IKernel)"
                                }
                              },
                              "id": 7437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4585:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IKernel_$8231",
                                "typeString": "contract IKernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IKernel_$8231",
                                "typeString": "contract IKernel"
                              }
                            ],
                            "id": 7435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4577:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 7438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4577:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7439,
                          "name": "preKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7422,
                          "src": "4598:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4577:30:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7441,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7309,
                        "src": "4609:30:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7434,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4569:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4569:71:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7443,
                  "nodeType": "ExpressionStatement",
                  "src": "4569:71:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 7448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7445,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5969,
                            "src": "4658:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view returns (bytes32)"
                            }
                          },
                          "id": 7446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4658:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7447,
                          "name": "preAppId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7429,
                          "src": "4669:8:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4658:19:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7449,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7309,
                        "src": "4679:30:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7444,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4650:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4650:60:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7451,
                  "nodeType": "ExpressionStatement",
                  "src": "4650:60:40"
                }
              ]
            },
            "documentation": null,
            "id": 7453,
            "name": "protectState",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 7420,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4457:0:40"
            },
            "src": "4435:282:40",
            "visibility": "internal"
          }
        ],
        "scope": 7455,
        "src": "254:4465:40"
      }
    ],
    "src": "44:4676:40"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.585Z",
  "devdoc": {
    "methods": {
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}